TensorFlow는 다양한 신경망을 훈련하고 배포하는 데 사용되는 인기 있는 기계 학습 프레임워크입니다. 이 문서에서는 TensorFlow를 사용하여 간단한 신경망을 구축하는 방법을 설명하고 시작하는 데 도움이 되는 샘플 코드를 제공합니다.
신경망 구축의 첫 번째 단계는 네트워크의 구조를 정의하는 것입니다. TensorFlow에서는 tf.keras 모듈을 사용하여 신경망의 레이어를 정의할 수 있습니다. 다음 코드 예제에서는 두 개의 숨겨진 레이어와 하나의 출력 레이어가 있는 완전히 연결된 피드포워드 신경망을 정의합니다. ``파이썬 텐서플로우 astf 가져오기 모델 = tf.keras.models.Sequential([ tf.keras.layers.Dense(units=64, 활성화='relu', input_shape=(input_dim,)), tf.keras.layers.Dense(units=32, 활성화='relu'), tf.keras.layers.Dense(units=output_dim, 활성화='softmax') ]) ```` 위 코드에서는 'Sequential' 모델을 사용하여 신경망을 구축했습니다. 'Dense' 레이어는 각 레이어의 뉴런(단위) 수와 활성화 함수(활성화)를 지정하는 완전 연결 레이어를 나타냅니다. 첫 번째 히든 레이어의 입력 모양은 `input_shape
import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
로 제공됩니다. 이 예에서는 Sequential 모델을 사용하여 신경망을 정의합니다. 각 레이어가 이전 레이어 위에 구축되는 간단한 스태킹 모델입니다. 우리는 3개의 레이어를 정의합니다. 첫 번째와 두 번째 레이어는 모두 64개의 뉴런으로 구성된 완전 연결 레이어이며 ReLU 활성화 함수를 사용합니다. 입력 레이어의 모양은 (784)입니다. 왜냐하면 우리는 MNIST 손글씨 숫자 데이터세트를 사용할 것이기 때문입니다. 이 데이터세트의 각 이미지는 28x28픽셀로 784픽셀로 확장됩니다. 마지막 레이어는 10개의 뉴런으로 구성된 완전 연결 레이어로, 소프트맥스 활성화 함수를 사용하고 MNIST 데이터세트의 숫자 분류와 같은 분류 작업에 사용됩니다.
모델을 컴파일하고 옵티마이저, 손실 함수, 평가 지표를 지정해야 합니다. 예는 다음과 같습니다.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
이 예에서는 Adam 최적화 프로그램을 사용하여 다중 클래스 분류 문제의 손실 함수로 교차 엔트로피를 사용하여 모델을 훈련합니다. 또한 훈련 및 평가 중에 모델 성능을 추적하기 위한 평가 지표로 정확도를 지정했습니다.
이제 모델의 구조와 훈련 구성을 정의했으므로 데이터를 읽고 모델 훈련을 시작할 수 있습니다. MNIST 손글씨 숫자 데이터세트를 예로 사용하겠습니다. 코드 예시는 다음과 같습니다.
from tensorflow.keras.datasets import mnist (train_images, train_labels), (test_images, test_labels) = mnist.load_data() train_images = train_images.reshape((60000, 784)) train_images = train_images.astype('float32') / 255 test_images = test_images.reshape((10000, 784)) test_images = test_images.astype('float32') / 255 train_labels = tf.keras.utils.to_categorical(train_labels) test_labels = tf.keras.utils.to_categorical(test_labels) model.fit(train_images, train_labels, epochs=5, batch_size=64)
이 예시에서는 mnist.load_data() 함수를 사용하여 MNIST 데이터세트를 로드합니다. 그런 다음 훈련 및 테스트 이미지를 784픽셀로 평면화하고 픽셀 값을 0과 1 사이로 조정했습니다. 또한 레이블을 분류 작업으로 변환하기 위해 레이블을 원-핫 인코딩합니다. 마지막으로, 학습 이미지와 라벨을 사용하고, 5개 에포크에 대한 교육을 지정하고, 각 에포크에 64개의 샘플을 사용하여 모델을 교육하는 fit 함수를 사용합니다.
훈련이 완료된 후 평가 함수를 사용하여 테스트 세트에서 모델의 성능을 평가할 수 있습니다.
test_loss, test_acc = model.evaluate(test_images, test_labels) print('Test accuracy:', test_acc)
이 예에서는 테스트 이미지와 라벨을 사용하여 평가 함수를 호출하고 결과를 인쇄합니다. 세트에서 테스트 중인 모델의 정확도를 표시합니다.
이것은 TensorFlow를 사용하여 신경망을 구축하고 훈련하는 방법에 대한 간단한 예입니다. 물론 실제 애플리케이션에서는 더 복잡한 네트워크 구조와 더 복잡한 데이터 세트가 필요할 수 있습니다. 그러나 이 예는 TensorFlow의 기본 사용법을 이해하는 데 도움이 되는 좋은 시작점을 제공합니다.
전체 코드 예제는 다음과 같습니다.
import tensorflow as tf from tensorflow.keras.datasets import mnist # Define the model architecture model = tf.keras.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) # Compile the model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Load the data (train_images, train_labels), (test_images, test_labels) = mnist.load_data() train_images = train_images.reshape((60000, 784)) train_images = train_images.astype('float32') / 255 test_images = test_images.reshape((10000, 784)) test_images = test_images.astype('float32') / 255 train_labels = tf.keras.utils.to_categorical(train_labels) test_labels = tf.keras.utils.to_categorical(test_labels) # Train the model model.fit(train_images, train_labels, epochs=5, batch_size=64) # Evaluate the model test_loss, test_acc = model.evaluate(test_images, test_labels) print('Test accuracy:', test_acc)
위는 TensorFlow를 사용하여 신경망을 구축하기 위한 예제 코드입니다. 이는 MNIST를 사용하여 두 개의 숨겨진 레이어와 하나의 출력 레이어를 포함하는 완전히 연결된 피드포워드 신경망을 정의합니다. 손으로 쓴 숫자 데이터 세트는 Adam 최적화 및 교차 엔트로피 손실 기능을 사용하여 훈련되고 테스트되었습니다. 최종 출력은 테스트 세트의 정확도입니다.
위 내용은 TensorFlow를 사용하여 신경망을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!