딥러닝 다중 클래스 분류 문제
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)
'DeepLearning' 카테고리의 다른 글
DeepLearning - 신경망 결합 concatenate (0) | 2022.10.31 |
---|---|
DeepLearning - Tensorflow 신경망 원리 (0) | 2022.10.30 |
DeepLearning - Tensorflow 활성화 함수 정리 (0) | 2022.10.29 |
DeepLearning - Tensorflow 기초(텐서,변수,연산,문자열) (0) | 2022.10.29 |
DeepLearning - Sequential API / Functional API? (0) | 2022.10.28 |