융무의 기술블로그
article thumbnail

텐서플로우 자격증 준비를 위한 공부를 하려고 합니다.

시험 문제 유형은 아래와 같으며 coursera와 udacity 강의를 보고 준비하려고 합니다.

  • Category 1: Basic / Simple model
  • Category 2: Model from learning dataset
  • Category 3: Convolutional Neural Network with real-world image dataset
  • Category 4: NLP Text Classification with real-world text dataset
  • Category 5: Sequence Model with real-world numeric dataset

www.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187

 

Intro to TensorFlow for Deep Learning | Udacity Free Courses

Developed by Google and Udacity, this course teaches a practical approach to deep learning for software developers.

www.udacity.com

www.coursera.org/learn/introduction-tensorflow/home/welcome

 

Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera

Learn online and earn valuable credentials from top universities like Yale, Michigan, Stanford, and leading companies like Google and IBM. Join Coursera for free and transform your career with degrees, certificates, Specializations, & MOOCs in data science

www.coursera.org

Category 2: Model from learning dataset

Fashion MNIST 데이터를 이용해서 간단한 모델을 만들고 학습을 시키려고 합니다. 아래는 MNIST 데이터의 Label과 Class에대한 설명입니다.

먼저 필요한 패키지를 import합니다.

x_train : 총 60000개의 28×28 크기의 이미지

y_train : x_train의 60000개에 대한 값(0~9)이 담겨있는 레이블 데이터셋

x=x_test,y_test 각각 10000개의 이미지와 레이블 데이터 셋

import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train = x_train / 255.0
x_test = x_test / 255.0

간단한 신경망 모델을 만들어보았다. 총 3개의 레이어로 이루어져 있는데 1번째 레이어는 1차원 테서로 펼치는 것이고 2번째 레이어는 1번째 레이어에서 제공되는 값인 784개의 값을 입력받아 128개로 인코딩 해주는데 활성화 함수로 ReLU 함수를 사용하였습니다. 4번째 레이어에는 총 10개의 값을 출력하는데 여기서 활성화 함수는 Softmax를 사용하였습니다. Softmax를 이용한 것은 다중분류를 위한 확률값으로 해석할 수 있도록 하기 위해서입니다. 

model = tf.keras.models.Sequential([
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(128, activation=tf.nn.relu),
        tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.summary()

정의된 모델을 학습하기 위해서 컴파일 합니다. 

 

역전파를 통한 가중치 최적화를 위한 기울기 방향에 대한 경사하강을 위한 방법으로 Adam 옵티마이저를 이용하였고 손실함수로 다중 분류의 Cross Entropy Error인 sparse_categorical_crossentropy를 이용하였습니다. 모델 평가를 위한 평가지표로는 accuracy를 지정하였습니다.

 

Epoch은 전체 데이터셋에 대해서 한번 학습할때의 단위로 모델의 반복횟수로는 5 Epoch를 지정하였습니다.

model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
history = model.fit(
         x_train, 
         y_train, 
         epochs=10
         )

모델 평가 결과 0.0944의 손실값과 0.9761의 정확도를 얻었습니다.

model.evaluate(x_test,  y_test, verbose=2)

 

profile

융무의 기술블로그

@융무

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!