2020-06-09 14:30:53

텐서플로와 케라스를 이용해서 CNN 구조를 만들기 위해 컨볼루션 레이어를 추가할때, 대개 컨볼루션 함수를 활성화와 함께 한 줄의 코드로 작성해줍니다. 다음과 같이 말이죠. 

 

model.add(layers.Conv2D(32, (3, 3), activation='relu'))

 

그런데 종종 필요에 의해 컨볼루션과 활성화를 분리해서 진행해야 하는 경우도 있습니다. 그런 경우에는 다음과 같이 코드를 분리해줄 수 있습니다. 위 코드와 완전히 동일한 일을 해줍니다. 

 

model.add(layers.Conv2D(32, (3, 3)))
model.add(layers.Activation(activation='relu'))  

 

FC(Fully connected) 레이어를 만들때도 마찬가지로 활성화를 따로 빼낼 수 있습니다. 

 

model.add(layers.Dense(64, activation='relu'))

 

이렇게 쓰나,

 

model.add(layers.Dense(64))
model.add(layers.Activation(activation='relu'))

 

이렇게 코딩하나 똑같습니다. 

 

 

<참고자료>

[1] https://keras.io/api/layers/activations/, Keras, "Layer activation fuctions"