반응형
데이터 및 준비
from tensorflow import keras
import numpy as np
(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()
from sklearn.model_selection import train_test_split
train_scaled = train_input / 255
train_scaled = train_scaled.reshape(-1, 28*28)
train_scaled, val_scaled, train_target, val_target = \
train_test_split(train_scaled, train_target, test_size = 0.2, random_state = 42)
sigmoid 및 softmax 층 추가 및 컴파일
#층 추가
model = keras.Sequential() #Sequential 클래스의 객체를 먼저 만들고
model.add(keras.layers.Dense(100, activation = 'sigmoid', input_shape = (784,)))
model.add(keras.layers.Dense(10, activation = 'softmax'))
model.summary()
#층 추가(2) - 이렇게 작성하면 Sequential 객체가 길어짐
# model = keras.Sequential([
# keras.layers.Dense(100, activation = 'sigmoid', input_shape = (784,),
# name = 'hidden')
# keras.layers.Dense(10, activation = 'softmax', name = 'output')
# ], name = '패션 MNist 모델')
#컴파일
model.compile(loss = 'sparse_categorical_crossentropy', metrics = 'accuracy')
model.fit(train_scaled, train_target, epochs = 5)
summary
입력층 : 784개
은닉층 : 784*100 + 100 = 78,500개
출력층 : 100*10 + 10 = 1,010개
총 파라미터 : 79,510개
relu 및 flatten 사용
#relu 및 flatten 사용
model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape = (28,28)))
#입력값의 차원을 짐작할 수 있음
model.add(keras.layers.Dense(100, activation = 'relu'))
#relu : max(0,z) → z가 0보다 크면 z값 출력, 0보다 작으면 0값 출력
model.add(keras.layers.Dense(10, activation = 'softmax'))
model.summary()
(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()
train_scaled = train_input / 255
train_scaled, val_scaled, train_target, val_target = \
train_test_split(train_scaled, train_target, test_size = 0.2, random_state = 42)
model.compile(loss = 'sparse_categorical_crossentropy', metrics = 'accuracy')
model.fit(train_scaled, train_target, epochs =5)
model.evaluate(val_scaled, val_target)
렐루함수
max(0,z) : 0보다 크면 z값, 0보다 작으면 0값
시그모이드 함수는 오른쪽과 왼쪽 끝으로 갈수록 그래프가 누워있기 때문에 올바른 출력을 만들기 어려움.
따라서 렐루함수 사용
옵티마이져 종류
반응형