UOMOP
기본적인 케라스(keras)모델 구현 본문
# 기본적인 케라스 모델을 만들어보도록 하자.
from tensorflow import keras
# 데이터 불러오기
(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()
# input, target data의 크기 확인
print("train_input의 크기 : {}".format(train_input.shape))
print("train_target의 크기 : {}".format(train_target.shape))
print("*" * 40)
print("test_input의 크기 : {}".format(test_input.shape))
print("test_target의 크기 : {}\n\n".format(test_target.shape))
train_scaled = train_input / 255
test_scaled = test_input / 255
# input data를 0~1로 정규화
train_scaled = train_scaled.reshape(-1, 28*28)
test_scaled = test_scaled.reshape(-1, 28*28)
# model의 훈련시킬 수 있는 2차원 배열로 변환
from sklearn.model_selection import train_test_split
train_scaled, val_scaled, train_target, val_target = train_test_split(train_scaled,
train_target, test_size = 0.2)
# 훈련 셋에서 20%를 검증 셋으로 분리
print("train_scaled의 shape : {}".format(train_scaled.shape))
print("train_target의 shape : {}".format(train_target.shape))
print("*"*45)
print("val_scaled의 shape : {}".format(val_scaled.shape))
print("val_scaled의 shape : {}\n\n".format(val_target.shape))
dense = keras.layers.Dense(10, activation = "softmax", input_shape = (784,))
# 출력층의 객체 선언
# 출력층의 유닛(클래스)는 10개,
# 다중분류이므로 소프트맥스로 활성화,
# 입력 data의 shape은 길이가 784인 1차원배열
# 만약 이진 분류라면 activation = "sigmoid"로 선언
model = keras.Sequential(dense)
# 전체 모델을 만들고 매개변수로 출력층인 dense 객체를 지정.
model.compile(loss = "sparse_categorical_crossentropy", metrics = "accuracy")
# 모델을 훈련하기 전에 손실함수와 성능평가지표를 설정해준다.
# 이진분류 : loss = "sparse_binary_crossentropy"
# 다중분류 : loss = "sparse_categorical_crossentropy"
# 만약 target data의 label이 정수로 labeling되어 있다면 loss에 sparse를 붙여줘야한다.
# 만약 target data가 원핫 인코딩(해당 target만 1, 나머지는 0)되어 있다면 sparse가 없어도 된다.
model.fit(train_scaled, train_target, epochs = 5)
# 5반 반복 훈련
print("\n\n")
model.evaluate(val_scaled, val_target)
# 검증 셋으로 성능확인
'Ai > DL' 카테고리의 다른 글
Functional API (0) | 2022.02.06 |
---|---|
미니배치 경사 하강법 using algorithm (boston) (0) | 2022.02.01 |
확률적 경사 하강법 using algorithm (boston) (0) | 2022.02.01 |
배치 경사 하강법 using keras (boston) (0) | 2022.02.01 |
배치 경사 하강법 using algorithm (boston) (0) | 2022.02.01 |
Comments