Data Science/Tensorflow2.0, Pytorch

5. Tensorflow2.0 Build Model

HJChung 2020. 3. 25. 22:02

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()