반응형
from tensorflow import keras
import numpy as np
(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()
print(train_input.shape, train_target.shape)
print(test_input.shape, test_target.shape)
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 10, figsize = (10,10))
for i in range(10):
axs[i].imshow(train_input[i], cmap = 'gray_r')
axs[i].axis('off')
plt.show()
print([train_target[i] for i in range(10)])
train_scaled = train_input / 255.0
train_scaled = train_scaled.reshape(-1, 28*28)
#원본데이터의 두번째, 세번째 차원이 1차원으로 합쳐짐
print(train_scaled.shape)
# >> (60000, 784) ## 784개의 픽셀로 이루어진 60,000개의 데이터
#교차검증
from sklearn.model_selection import cross_validate
from sklearn.linear_model import SGDClassifier
sc = SGDClassifier(loss = 'log', max_iter = 5, random_state = 42)
scores = cross_validate(sc, train_scaled, train_target, n_jobs = -1)
print(np.mean(scores['test_score']))
import tensorflow as tf
from tensorflow import keras
#검증세트 나누기
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, random_state = 42)
print(train_scaled.shape, val_scaled.shape)
#dense클래스를 사용하여 밀집층 만들기
dense = keras.layers.Dense(10, activation = 'softmax', input_shape = (784,))
model = keras.Sequential(dense)
#Sequential 클래스의 객체르 만들 때 dense를 전달
#손실함수의 종류 설정(다중분류)
model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy')
#binary_crossentropy는 이진분류
#훈련 및 평가
model.fit(train_scaled, train_target, epochs = 5)
model.evaluate(val_scaled, val_target)
출처 : 혼자 공부하는 머신러닝 딥러
반응형