본문 바로가기
책&강의 학습/올인원 패키지 :딥러닝&인공지능

[패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 4회차 미션

by 소한보 2020. 7. 2.

각 Layer별 역할 개념 및 파라미터

Fully Connected

1차원으로 펼치고 다음 노드하고 하나씩에 연결
각 선에는 weight가 들어감 (ReLU)
마지막은 Softmax함수가 들어감
y = wX + b의 형태

Flatten

layer = tf.keras.layers.Flatten()
flatten = layer(output)
output.shape
>>> TensorShape([1, 28, 28, 5])
flatten.shape
>>> TensorShape([1, 3920]) #1은 batch_size 각 이미지에 대해 연산하는 것이기 때문에 1개씩 들어가야함
28 * 28 * 5 #3920은 28 * 28 * 5의 값
>>> 3920
 #시각화
plt.figure(figsize=(10,2))
plt.subplot(211)
plt.hist(flatten.numpy().ravel())
plt.subplot(212)
plt.imshow(flatten[:,:100],'jet')

Dense

다음층에 연결을 어느정도 할지 경정
unit : 연결시킬 개수, 아래코드에서는 32

layer = tf.keras.layers.Dense(32,activation='relu')
output = layer(flatten)
output.shape
>>> TensorShape([1, 32])
layer_2 = tf.keras.layers.Dense(10,activation='relu')
output_example = layer_2(output)
output_example.shape
>>> TensorShape([1, 10])

Dropout

학습이 안되는 부분을 제외 -> overfitting 방지
학습할때는 dropout 진행되지만,
test할때는 dropout이 다시 돌아옴

layer = tf.keras.layers.Dropout(0.7)
output = layer(output)
output.shape #연산에서 제외하는 것이라 모양이 바뀌진 않음
>>>TensorShape([1, 32])

model

모델을 마음대로 바꾸는걸로 하기보다는 가져다 쓰는걸 추천
딥러닝 디코딩하다보면 모델이 잘못된건지, 데이터가 잘못된건지 파악하기 어려움
따라서 잘된 모델 가져다 사용하고 이후 튜닝하는 것을 추천

#모델설계전 input_shape과 class의 수를 지정
from tensorflow.keras import layers
input_shape = (28, 28, 1)
num_classes = 10

inputs = layers.Input(shape = input_shape)
#Feature Extraction
net = layers.Conv2D(32, 3, padding="same")(inputs)
net = layers.Activation('relu')(net)
net = layers.Conv2D(32, 3, padding="same")(net)
net = layers.Activation('relu')(net)
net = layers.MaxPool2D((2,2))(net)
net = layers.Dropout(0.25)(net)

net = layers.Conv2D(64, 3, padding="same")(net)
net = layers.Activation('relu')(net)
net = layers.Conv2D(64, 3, padding="same")(net)
net = layers.Activation('relu')(net)
net = layers.MaxPool2D((2,2))(net)
net = layers.Dropout(0.25)(net)

#Fully Connected
net = layers.Flatten()(net)
net = layers.Dense(512)(net)
net = layers.Activation('relu')(net)
net = layers.Dropout(0.25)(net)
net = layers.Dense(10)(net)
net = layers.Activation('softmax')(net)

model = tf.keras.Model(inputs=inputs, outputs = net,name = 'Basic_CNN')

딥러닝/인공지능 올인원 패키지 Online

댓글