2. CNN 학습 실습¶
- 모듈 불러오기
- 하이퍼 파라미터 정의
- CNN 구조 정의
- 데이터 불러오기
- 데이터 : keras에서 제공하는 fashion_mnist
- 모델 생성
- 모델 학습
1. 모듈 불러오기¶
In [1]:
import tensorflow as tf
import numpy as np
2. 하이퍼 파라미터 정의¶
In [2]:
EPOCHS = 10
3. 네트워크 구조 정의 (CNN 구조 정의)¶
-
keras방식으로 해보겠다.
-
convolution(Conv2D)
- padding : 'same'으로 하면 padding을 하여 크기 유지, 'valid'으로 하면 zero pading하지 않고 영상이 점점 줄어든다.
- activation function : 'relu'
-
pooling(MaxPool2D) : 아무 설정도 하지 않으면 자동으로 stride:(2, 2)로 해준다.
- full connection
- Flatten
- Dense
- activation function으로 classification : 'relu', 'softmax'
-
In [1]:
from tensorflow.keras.layers import Conv2D, MaxPool2D, Flatten, Dense
from tensorflow.keras.models import Sequential
In [4]:
def MyModel():
return Sequential([Conv2D(32, (3, 3), padding = 'same', activation='relu'), #28*28*32
MaxPool2D(),#14*14*32
Conv2D(64, (3, 3), padding = 'same', activation = 'relu'),#14*14*64
MaxPool2D(), #7*7*64
Conv2D(128, (3, 3), padding = 'same', activation = 'relu'),#7*7*128
Flatten(),#7*7*128 => 6272
Dense(128, activation= 'relu'), #6272 => 128, relu
Dense(10, activation= 'softmax') #128 ->10, softmax
]) #순서대로 우리가 사용할 layer을 다 넣어주면 된다.
4. 데이터 불러오기, 전처리¶
In [5]:
#데이터 불러오기
fashion_mnist = tf.keras.datasets.fashion_mnist
In [6]:
#train, test set split
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
#흑백 영상은 각 픽셀이 0~1 사이의 실수로 된 2-D signal로 표현 할 수 있다.
#이차원 신호와 흑백 이미지: 0~255 사이의 값을 0~1로 normalize
x_train, x_test = x_train / 255.0, x_test / 255.0
x_train = x_train.astype(np.float32)
x_test = x_test.astype(np.float32)
In [7]:
print(x_train.shape)#(x_train총 개수, heigt, width)
print(x_train[0].shape) #(height, width)
#근데 Cin(Cannel in)이 필요하니까 차원 하나를 추기해 주어야 한다.
x_train = x_train[..., np.newaxis]
x_test = x_test[..., np.newaxis]
print(x_train.shape)
print(x_train[0].shape)
In [8]:
train_ds = tf.data.Dataset.from_tensor_slices((x_train, y_train)).shuffle(10000).batch(32).prefetch(2048)
test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32).prefetch(2048)
5. 모델 생성¶
In [9]:
model = MyModel()
model.compile(optimizer = 'adam',
loss = 'sparse_categorical_crossentropy',
metrics = ['accuracy'])
6. 모델 학습¶
In [10]:
model.fit(train_ds, validation_data = test_ds, epochs = EPOCHS)
Out[10]:
In [ ]:
'Data Science > Convolutional Neural Network(CNN)' 카테고리의 다른 글
6. Advanced CNN-2 (0) | 2020.03.18 |
---|---|
5. Advanced CNN-1 (0) | 2020.03.18 |
4. Basic CNN Implementation(v1) (0) | 2020.03.15 |
3. Batch Normalization (0) | 2020.03.14 |
2. Basic CNN-2 (0) | 2020.03.14 |