DeepLearning / / 2022. 10. 30. 14:37

DeepLearning - Tensorflow (Kaggle, Fashion MNIST)

딥러닝 다중 클래스 분류 문제 

 

from tensorflow.keras.datasets import fashion_mnist

'''데이터 전처리 '''


(X_train,y_train),(X_test,y_test) = fashion_mnist.load_data()
'''
학습용 세트는 이미지

X_train = 6만개 이미지의 모든 픽셀 
X_test = 1만개 이미지의 모든 픽셀 
Y_train 학습세트 테스트 대상 
Y_test = 학습세트 테스트 대상

'''
# 이미지 표준화 하기 255로 나누어 0,1사이로 만든다.

X_train = X_train / 255.0
print(X_train.shape) # (60000, 28, 28)
X_test = X_test / 255.0 # (10000, 28,26)

# Reshaping the dataset* 데이터 재구축 단계  

X_train = X_train.reshape(-1,28*28) # (60000, 784)
X_test = X_test.reshape(-1 ,28*28) # (10000, 784)
model = tf.keras.models.Sequential()

#Adding a first fully -connected hidden Layer 
'''
Layer hyper parameters 

- number of units/neurons : 128 
- activation function : ReLu 
- input_shape(784, )

'''
#신경계 입력은 단일벡터 784, 는 벡터 의미 
model.add(tf.keras.layers.Dense(units=128, activation ='relu', input_shape=(784,)))

# [ 레이어 내의 뉴런을 비활성화]
# 역전파 도중에는 학습이 일어나지 않는다.
#몇개의 뉴런이 활성화 되지 않을까 ? 비율을 선택 한다 보통 20~50% 
#과적합 문제를 피하기 위해서
 
model.add(tf.keras.layers.Dropout(0.2))

#Adding the output layer 출력 레이어 추가 (10개의 아웃풋 뉴런)
#최종예측 클래스로 하나의 클래스가 아닌 10개의 클래스가 있는 것 이다.
# units : number of classes ( 10 in the Fashion MNIST dataset)
# activation : softmax 각 클래스의 가능성 측정 

model.add(tf.keras.layers.Dense(units=10,activation='softmax'))

# Compilung the model 
# Optimizer : Adam 
# loss: Sparse softmax (categorical) crossntropy
####################################################
'''아담 옵티마이저가 가장 좋은 옵티마이저 중 하나이다.

첫번째는 경사 하강법으로 가중치를 업데이트해줄 옵티마이저 이고, 
아담 옵티마이저가 가장 좋은 옵티마이저중 하나이다 . Default 

카테고리가 2개이상 이거나 클래스를 예측할 때는 sparse_categorical_accuracy
를 사용하면 된다. 
'''
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',
              metrics=['sparse_categorical_accuracy'])

model.summary() 

#모델 학습 
'''특정 epochs를 넘어가면 정확도가 올라간다.'''
model.fit(X_train, y_train ,epochs=500)

#<모델의 퍼포먼스 평가 하기> 
# 평가데이터는 *평가 데이터는 학습 하지 않았다.

test_loss, test_accuracy = model.evaluate(X_test, y_test) 
#evaluate 테스트 세트에 대한 손실과 정확도가 나옴 
print('test_accuracy:',test_accuracy)

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유