본문 바로가기

카테고리 없음

[코딩] 07-1 인공신경망

반응형

 

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)

출처 : 혼자 공부하는 머신러닝 딥러

반응형