목차
1. 데이터 세트 및 타겟
2. 준비
3. 하이퍼파라미터
4. 훈련 및 테스트 세트 만들기
5. 신경망 아키텍처 설계
6、训练
7、小结
기술 주변기기 일체 포함 TensorFlow를 사용한 이미지 분류 모델 학습 가이드

TensorFlow를 사용한 이미지 분류 모델 학습 가이드

Apr 13, 2023 pm 05:13 PM
모델 tensorflow 분류

번역가 | Chen Jun

리뷰어 | Sun Shujuan

우리 모두 알고 있듯이 인간은 아주 어린 나이에 자신이 보는 것을 식별하고 라벨을 붙이는 법을 배웁니다. 오늘날 머신러닝과 딥러닝 알고리즘이 지속적으로 반복되면서 컴퓨터는 캡처한 이미지를 대규모로 매우 정확하게 분류할 수 있게 되었습니다. 현재 이러한 고급 알고리즘의 적용 시나리오에는 폐 스캔 이미지를 해석하여 건강한지 확인하고, 모바일 장치를 통해 얼굴 인식을 수행하고, 소매업체를 위한 다양한 유형의 소비자 개체를 구별하는 작업이 포함됩니다.

아래에서는 컴퓨터 비전의 응용(이미지 분류)에 대해 논의하고 TensorFlow를 사용하여 작은 이미지 데이터 세트에서 모델을 훈련하는 방법을 단계별로 보여줍니다.

1. 데이터 세트 및 타겟

이 예에서는 0부터 9까지의 숫자 이미지로 구성된 MNIST 데이터 세트를 사용합니다. 모양은 아래 그림과 같습니다.

TensorFlow를 사용한 이미지 분류 모델 학습 가이드

이 모델을 훈련하는 목적은 이미지를 각 레이블 아래, 즉 위 그림의 해당 번호로 분류하는 것입니다. 일반적으로 심층 신경망 아키텍처는 모델 학습을 위해 입력, 출력, 두 개의 숨겨진 레이어(Hidden Layers) 및 드롭아웃 레이어를 제공합니다. CNN 또는 Convolutional Neural Network는 더 큰 이미지를 식별하기 위한 첫 번째 선택입니다. 입력량을 줄이면서 관련 정보를 캡처할 수 있습니다.

2. 준비

먼저 신경망 아키텍처 코드베이스 구축을 위해 TensorFlow, to_categorical(숫자 클래스 값을 다른 카테고리로 변환하는 데 사용), Sequential, Flatten, Dense 및 Dropout을 통해 관련 데이터를 모두 가져옵니다. . 여기에 언급된 코드 라이브러리 중 일부는 여러분에게 약간 생소할 수 있습니다. 아래에서 자세히 설명하겠습니다.

3. 하이퍼파라미터

  • 다음 측면을 통해 올바른 하이퍼파라미터 세트를 선택하겠습니다.

  • 먼저 몇 가지 하이퍼파라미터를 시작점으로 정의하겠습니다. 나중에 다양한 요구 사항에 맞게 조정할 수 있습니다. 여기서는 더 작은 배치 크기로 128을 선택했습니다. 실제로 배치 크기는 어떤 값이든 가질 수 있지만 크기 2의 거듭제곱은 메모리 효율성을 향상시키는 경우가 많으므로 이것이 첫 번째 선택이 되어야 합니다. 적절한 배치 크기를 결정하는 주된 이유는 배치 크기가 너무 작으면 수렴이 너무 번거로워지고 배치 크기가 너무 크면 컴퓨터 메모리에 맞지 않을 수 있다는 것입니다.
  • 모델의 빠른 학습을 달성하기 위해 Epoch(훈련 세트의 각 샘플이 하나의 훈련에 참여) 수를 50으로 유지하겠습니다. epoch 값이 낮을수록 작고 간단한 데이터 세트에 더 적합합니다.
  • 다음으로 숨겨진 레이어를 추가해야 합니다. 여기서는 각 숨겨진 레이어에 대해 128개의 뉴런을 예약했습니다. 물론 64개 및 32개 뉴런으로 테스트할 수도 있습니다. 이 경우 MINST와 같은 간단한 데이터 세트의 경우 더 높은 값을 사용하지 않는 것이 좋습니다.
  • 0.01, 0.05, 0.1 등 다양한 학습률을 시도해 볼 수 있습니다. 이 경우에는 0.01로 유지합니다.
  • 다른 초매개변수의 경우 붕괴 단계와 붕괴율을 각각 2000과 0.9로 선택합니다. 그리고 훈련이 진행됨에 따라 학습 속도를 줄이는 데 사용될 수 있습니다.
  • 여기에서는 Adamax를 최적화 프로그램으로 선택했습니다. 물론 Adam, RMSProp, SGD 등과 같은 다른 최적화 프로그램을 선택할 수도 있습니다.
import tensorflow as tf
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense, Dropout
params = {
'dropout': 0.25,
'batch-size': 128,
'epochs': 50,
'layer-1-size': 128,
'layer-2-size': 128,
'initial-lr': 0.01,
'decay-steps': 2000,
'decay-rate': 0.9,
'optimizer': 'adamax'
}
mnist = tf.keras.datasets.mnist
num_class = 10
# split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# reshape and normalize the data
x_train = x_train.reshape(60000, 784).astype("float32")/255
x_test = x_test.reshape(10000, 784).astype("float32")/255
# convert class vectors to binary class matrices
y_train = to_categorical(y_train, num_class)
y_test = to_categorical(y_test, num_class)
로그인 후 복사

4. 훈련 및 테스트 세트 만들기

TensorFlow 라이브러리에는 MNIST 데이터 세트도 포함되어 있으므로 객체에 대해datasets.mnist를 호출한 다음 load_data() 샘플을 호출하여 훈련(60,000)을 얻을 수 있습니다. ) 및 테스트(10,000개 샘플) 데이터 세트.

다음으로 훈련 및 테스트 이미지의 모양을 변경하고 정규화해야 합니다. 그 중에서 정규화는 이미지의 픽셀 강도를 0과 1 사이로 제한합니다.

마지막으로 앞서 가져온 to_categorical 메서드를 사용하여 훈련 및 테스트 레이블을 분류된 레이블로 변환합니다. 이는 출력 레이블(예: 0~9)이 숫자 유형이 아닌 클래스임을 TensorFlow 프레임워크에 전달하는 데 매우 중요합니다.

5. 신경망 아키텍처 설계

이제 신경망 아키텍처를 구체적으로 설계하는 방법을 알아보겠습니다.

DNN(Deep Neural Network)의 구조를 정의하기 위해 Flatten을 추가하여 2D 이미지 매트릭스를 벡터로 변환합니다. 여기서 입력 뉴런은 벡터의 숫자에 해당합니다.

다음으로 Dense() 메서드를 사용하여 두 개의 숨겨진 Dense 레이어를 추가하고 이전에 정의된 "params" 사전에서 각 하이퍼파라미터를 추출합니다. 이러한 레이어의 활성화 함수로 "relu"(Rectified Linear Unit)를 사용할 수 있습니다. 신경망의 은닉층에서 가장 일반적으로 사용되는 활성화 함수 중 하나입니다.

그런 다음 Dropout 메서드를 사용하여 Dropout 레이어를 추가합니다. 신경망을 훈련할 때 과적합을 방지하는 데 사용됩니다. 결국 과대적합 모델은 훈련 세트를 정확하게 기억하는 경향이 있으며 보이지 않는 데이터 세트로 일반화하는 데 실패합니다.

输出层是我们网络中的最后一层,它是使用Dense() 方法来定义的。需要注意的是,输出层有10个神经元,这对应于类(数字)的数量。

# Model Definition
# Get parameters from logged hyperparameters
model = Sequential([
Flatten(input_shape=(784, )),
Dense(params('layer-1-size'), activatinotallow='relu'),
Dense(params('layer-2-size'), activatinotallow='relu'),
Dropout(params('dropout')),
Dense(10)
])
lr_schedule =
tf.keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate=experiment.get_parameter('initial-lr'),
decay_steps=experiment.get_parameter('decay-steps'),
decay_rate=experiment.get_parameter('decay-rate')
)
loss_fn = tf.keras.losses.CategoricalCrossentropy(from_logits=True)
model.compile(optimizer='adamax',
loss=loss_fn,
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=experiment.get_parameter('batch-size'),
epochs=experiment.get_parameter('epochs'),
validation_data=(x_test, y_test),)
score = model.evaluate(x_test, y_test)
# Log Model
model.save('tf-mnist-comet.h5')
로그인 후 복사

6、训练

至此,我们已经定义好了架构。下面让我们用给定的训练数据,来编译和训练神经网络。

首先,我们以初始学习率、衰减步骤和衰减率作为参数,使用ExponentialDecay(指数衰减学习率)来定义学习率计划。

其次,将损失函数定义为CategoricalCrossentropy(用于多类式分类)。

接着,通过将优化器 (即:adamax)、损失函数、以及各项指标(由于所有类都同等重要、且均匀分布,因此我选择了准确性)作为参数,来编译模型。

然后,我们通过使用x_train、y_train、batch_size、epochs和validation_data去调用一个拟合方法,并拟合出模型。

同时,我们调用模型对象的评估方法,以获得模型在不可见数据集上的表现分数。

最后,您可以使用在模型对象上调用的save方法,保存要在生产环境中部署的模型对象。

7、小结

综上所述,我们讨论了为图像分类任务,训练深度神经网络的一些入门级的知识。您可以将其作为熟悉使用神经网络,进行图像分类的一个起点。据此,您可了解到该如何选择正确的参数集、以及架构背后的思考逻辑。

原文链接:https://www.kdnuggets.com/2022/12/guide-train-image-classification-model-tensorflow.html

위 내용은 TensorFlow를 사용한 이미지 분류 모델 학습 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

세계에서 가장 강력한 오픈 소스 MoE 모델이 여기에 있습니다. 중국의 기능은 GPT-4와 비슷하며 가격은 GPT-4-Turbo의 거의 1%에 불과합니다. 세계에서 가장 강력한 오픈 소스 MoE 모델이 여기에 있습니다. 중국의 기능은 GPT-4와 비슷하며 가격은 GPT-4-Turbo의 거의 1%에 불과합니다. May 07, 2024 pm 04:13 PM

기존 컴퓨팅을 능가할 뿐만 아니라 더 낮은 비용으로 더 효율적인 성능을 달성하는 인공 지능 모델을 상상해 보세요. 이것은 공상과학 소설이 아닙니다. DeepSeek-V2[1], 세계에서 가장 강력한 오픈 소스 MoE 모델이 여기에 있습니다. DeepSeek-V2는 경제적인 훈련과 효율적인 추론이라는 특징을 지닌 전문가(MoE) 언어 모델의 강력한 혼합입니다. 이는 236B 매개변수로 구성되며, 그 중 21B는 각 마커를 활성화하는 데 사용됩니다. DeepSeek67B와 비교하여 DeepSeek-V2는 더 강력한 성능을 제공하는 동시에 훈련 비용을 42.5% 절감하고 KV 캐시를 93.3% 줄이며 최대 생성 처리량을 5.76배로 늘립니다. DeepSeek은 일반 인공지능을 연구하는 회사입니다.

AI가 수학적 연구를 전복시킨다! 필즈상 수상자이자 중국계 미국인 수학자, Terence Tao가 좋아하는 11개 논문 발표 | AI가 수학적 연구를 전복시킨다! 필즈상 수상자이자 중국계 미국인 수학자, Terence Tao가 좋아하는 11개 논문 발표 | Apr 09, 2024 am 11:52 AM

AI는 실제로 수학을 변화시키고 있습니다. 최근 이 문제에 주목하고 있는 타오저쉬안(Tao Zhexuan)은 '미국수학회지(Bulletin of the American Mathematical Society)' 최신호를 게재했다. '기계가 수학을 바꿀 것인가?'라는 주제를 중심으로 많은 수학자들이 그들의 의견을 표현했습니다. 저자는 필즈상 수상자 Akshay Venkatesh, 중국 수학자 Zheng Lejun, 뉴욕대학교 컴퓨터 과학자 Ernest Davis 등 업계의 유명 학자들을 포함해 강력한 라인업을 보유하고 있습니다. AI의 세계는 극적으로 변했습니다. 이 기사 중 상당수는 1년 전에 제출되었습니다.

안녕하세요, 일렉트릭 아틀라스입니다! 보스턴 다이나믹스 로봇 부활, 180도 이상한 움직임에 겁먹은 머스크 안녕하세요, 일렉트릭 아틀라스입니다! 보스턴 다이나믹스 로봇 부활, 180도 이상한 움직임에 겁먹은 머스크 Apr 18, 2024 pm 07:58 PM

Boston Dynamics Atlas가 공식적으로 전기 로봇 시대에 돌입했습니다! 어제 유압식 Atlas가 역사의 무대에서 "눈물을 흘리며" 물러났습니다. 오늘 Boston Dynamics는 전기식 Atlas가 작동 중이라고 발표했습니다. 상업용 휴머노이드 로봇 분야에서는 보스턴 다이내믹스가 테슬라와 경쟁하겠다는 각오를 다진 것으로 보인다. 새 영상은 공개된 지 10시간 만에 이미 100만 명이 넘는 조회수를 기록했다. 옛 사람들은 떠나고 새로운 역할이 등장하는 것은 역사적 필연이다. 올해가 휴머노이드 로봇의 폭발적인 해라는 것은 의심의 여지가 없습니다. 네티즌들은 “로봇의 발전으로 올해 개막식도 인간처럼 생겼고, 자유도도 인간보다 훨씬 크다. 그런데 정말 공포영화가 아닌가?”라는 반응을 보였다. 영상 시작 부분에서 아틀라스는 바닥에 등을 대고 가만히 누워 있는 모습입니다. 다음은 입이 떡 벌어지는 내용이다

MLP를 대체하는 KAN은 오픈소스 프로젝트를 통해 컨볼루션으로 확장되었습니다. MLP를 대체하는 KAN은 오픈소스 프로젝트를 통해 컨볼루션으로 확장되었습니다. Jun 01, 2024 pm 10:03 PM

이달 초 MIT와 기타 기관의 연구자들은 MLP에 대한 매우 유망한 대안인 KAN을 제안했습니다. KAN은 정확성과 해석성 측면에서 MLP보다 뛰어납니다. 그리고 매우 적은 수의 매개변수로 더 많은 수의 매개변수를 사용하여 실행되는 MLP보다 성능이 뛰어날 수 있습니다. 예를 들어 저자는 KAN을 사용하여 더 작은 네트워크와 더 높은 수준의 자동화로 DeepMind의 결과를 재현했다고 밝혔습니다. 구체적으로 DeepMind의 MLP에는 약 300,000개의 매개변수가 있는 반면 KAN에는 약 200개의 매개변수만 있습니다. KAN은 MLP와 같이 강력한 수학적 기반을 가지고 있으며, KAN은 Kolmogorov-Arnold 표현 정리를 기반으로 합니다. 아래 그림과 같이 KAN은

Google은 열광하고 있습니다. JAX 성능이 Pytorch와 TensorFlow를 능가합니다! GPU 추론 훈련을 위한 가장 빠른 선택이 될 수 있습니다. Google은 열광하고 있습니다. JAX 성능이 Pytorch와 TensorFlow를 능가합니다! GPU 추론 훈련을 위한 가장 빠른 선택이 될 수 있습니다. Apr 01, 2024 pm 07:46 PM

Google이 추진하는 JAX의 성능은 최근 벤치마크 테스트에서 Pytorch와 TensorFlow를 능가하여 7개 지표에서 1위를 차지했습니다. 그리고 JAX 성능이 가장 좋은 TPU에서는 테스트가 이루어지지 않았습니다. 개발자들 사이에서는 여전히 Tensorflow보다 Pytorch가 더 인기가 있습니다. 그러나 앞으로는 더 큰 모델이 JAX 플랫폼을 기반으로 훈련되고 실행될 것입니다. 모델 최근 Keras 팀은 기본 PyTorch 구현을 사용하여 세 가지 백엔드(TensorFlow, JAX, PyTorch)와 TensorFlow를 사용하는 Keras2를 벤치마킹했습니다. 첫째, 그들은 주류 세트를 선택합니다.

공장에서 일하는 테슬라 로봇, 머스크 : 올해 손의 자유도가 22도에 달할 것! 공장에서 일하는 테슬라 로봇, 머스크 : 올해 손의 자유도가 22도에 달할 것! May 06, 2024 pm 04:13 PM

테슬라의 로봇 옵티머스(Optimus)의 최신 영상이 공개됐는데, 이미 공장에서 작동이 가능한 상태다. 정상 속도에서는 배터리(테슬라의 4680 배터리)를 다음과 같이 분류합니다. 공식은 또한 20배 속도로 보이는 모습을 공개했습니다. 작은 "워크스테이션"에서 따고 따고 따고 : 이번에 출시됩니다. 영상에는 옵티머스가 공장에서 이 작업을 전 과정에 걸쳐 사람의 개입 없이 완전히 자율적으로 완료하는 모습이 담겨 있습니다. 그리고 Optimus의 관점에서 보면 자동 오류 수정에 중점을 두고 구부러진 배터리를 집어 넣을 수도 있습니다. NVIDIA 과학자 Jim Fan은 Optimus의 손에 대해 높은 평가를 했습니다. Optimus의 손은 세계의 다섯 손가락 로봇 중 하나입니다. 가장 능숙합니다. 손은 촉각적일 뿐만 아니라

FisheyeDetNet: 어안 카메라를 기반으로 한 최초의 표적 탐지 알고리즘 FisheyeDetNet: 어안 카메라를 기반으로 한 최초의 표적 탐지 알고리즘 Apr 26, 2024 am 11:37 AM

표적 탐지는 자율주행 시스템에서 상대적으로 성숙한 문제이며, 그 중 보행자 탐지는 가장 먼저 배포되는 알고리즘 중 하나입니다. 대부분의 논문에서 매우 포괄적인 연구가 수행되었습니다. 그러나 서라운드 뷰를 위한 어안 카메라를 사용한 거리 인식은 상대적으로 덜 연구되었습니다. 큰 방사형 왜곡으로 인해 표준 경계 상자 표현은 어안 카메라에서 구현하기 어렵습니다. 위의 설명을 완화하기 위해 확장된 경계 상자, 타원 및 일반 다각형 디자인을 극/각 표현으로 탐색하고 인스턴스 분할 mIOU 메트릭을 정의하여 이러한 표현을 분석합니다. 제안된 다각형 형태의 모델 fisheyeDetNet은 다른 모델보다 성능이 뛰어나며 동시에 자율 주행을 위한 Valeo fisheye 카메라 데이터 세트에서 49.5% mAP를 달성합니다.

DualBEV: BEVFormer 및 BEVDet4D를 크게 능가하는 책을 펼치세요! DualBEV: BEVFormer 및 BEVDet4D를 크게 능가하는 책을 펼치세요! Mar 21, 2024 pm 05:21 PM

본 논문에서는 자율 주행에서 다양한 시야각(예: 원근 및 조감도)에서 객체를 정확하게 감지하는 문제, 특히 원근(PV) 공간에서 조감(BEV) 공간으로 기능을 효과적으로 변환하는 방법을 탐구합니다. VT(Visual Transformation) 모듈을 통해 구현됩니다. 기존 방법은 크게 2D에서 3D로, 3D에서 2D로 변환하는 두 가지 전략으로 나뉩니다. 2D에서 3D로의 방법은 깊이 확률을 예측하여 조밀한 2D 특징을 개선하지만, 특히 먼 영역에서는 깊이 예측의 본질적인 불확실성으로 인해 부정확성이 발생할 수 있습니다. 3D에서 2D로의 방법은 일반적으로 3D 쿼리를 사용하여 2D 기능을 샘플링하고 Transformer를 통해 3D와 2D 기능 간의 대응에 대한 주의 가중치를 학습하므로 계산 및 배포 시간이 늘어납니다.

See all articles