keras의 layer같은 경우는 쌓는 방법이 여러가지가 있습니다.
이는 공식 홈페이지를 들어가보면 여러가지가 있는데, 그 중 한
가지를 학습하였습니다. (강의마다 이 부분이 너무 달라 저에게 맞는 방식을 찾느라 정말 많이 헤맸습니다.
1. input shape 알기(지정해주기)
먼저 model에 input이미지를 넣기 위해서는 input shape와 전체 class 개수를 지정해주는 것 부터가 시작입니다.
from tensorflow.keras import layers
#1. input shape와 전체 class 개수를 지정해주는 것 부터가 시작!
input_shape = (28, 28, 1)
num_classes = 10
2. layer 쌓기
첫 layer에 input을 넣어주고, 그 이후부터 계속 인자로 각 layer의 결과를 넣어주면서 진행합니다.
#2. 첫 layer에 input을 넣어주고, 그 이후부터 계속 인자로 각 layer의 결과를 넣어주면서 진행합니다.
inputs = layers.Input(shape = input_shape) #첫 layer에 input_shape를 넣어줍니다.
output = layers.Conv2D(32, 3, 1, padding = 'SAME')(inputs)
output = layers.Activation('relu')(output)
output = layers.Conv2D(32, 3, 1, padding = 'SAME')(output)
output = layers.Activation('relu')(output)
output = layers.MaxPool2D((2, 2))(output)
output = layers.Dropout(0.25)(output)
########여기까지가 Convolution block 1개라고 합니다. #########
output = layers.Conv2D(64, 3, 1, padding = 'SAME')(output)
output = layers.Activation('relu')(output)
output = layers.Conv2D(64, 3, 1, padding = 'SAME')(output)
output = layers.Activation('relu')(output)
output = layers.MaxPool2D((2, 2))(output)
output = layers.Dropout(0.25)(output)
######## Convolution block #########
##fully connected
output = layers.Flatten()(output)
output = layers.Dense(512)(output)
output = layers.Activation('relu')(output)
output = layers.Dropout(0.25)(output)
output = layers.Dense(10)(output)
output = layers.Activation('softmax')(output) #softmax를 하면 ~일 확률은 ~다. 라고 컴퓨터가 알려주는것입니다.
3. model에 다 쌓은 layer들 넣어주기
model.summary()를 이용하면 각 layer에 대해서 한 눈에 볼 수 있습니다.
#3. model에 다 쌓은 layer들 넣어주기
model = tf.keras.Model(inputs = inputs, outputs = output, name = 'Basic_CNN') #모델 이름도 'Basic_CNN'으로 정해주었습니다.
model.summary()
'Data Science > Tensorflow2.0, Pytorch' 카테고리의 다른 글
7. Tensorflow2.0 Optimization & Training (Keras) (0) | 2020.03.27 |
---|---|
6. Tensorflow2.0 Optimization & Training (Beginner) (0) | 2020.03.25 |
4. Tensorflow2.0 Layer Explaination (0) | 2020.03.25 |
3. Tensorflow2.0 (y_train) Data Preprocess (using MNIST) (0) | 2020.03.25 |
2. Tensorflow2.0 (X_train) Data Preprocess (using MNIST) (0) | 2020.03.25 |