마지막으로 YOLO 모델의 모든 층을 순회하면서 두 가지 작업을 수행합니다(④).
• 첫째, 각 층의 학습 가능성을 False로 설정하여, 사전 학습된 가중치가 학습 중에 변경되지 않게 합니다.
• 둘째, 해당 층에 활성화 함수가 있는 경우, 그 활성화 함수를 LeakyReLU로 변경합니다. 이는 YOLO 모델에서 더 나은 성능을 달성하기 위해 사용되는 특정 기술입니다.
이제 모델 작성 코드를 간소화하기 위하여 층 생성 함수를 작성하고 층을 모델에 추가해보겠습니다.
def add_conv_layer(YOLO, filters, name):
YOLO.add(tf.keras.layers.Conv2D(filters, (3, 3),activation=leaky_relu,kernel_initializer=initializer,kernel_regularizer=regularizer,padding='SAME',name=name, dtype='float32'))
def add_dense_layer(YOLO, units, name, activation=leaky_relu, dropout=None):
YOLO.add(tf.keras.layers.Dense(units,activation=activation,kernel_initializer=initializer,kernel_regularizer=regularizer,name=name,dtype='float32'))
if dropout:
YOLO.add(tf.keras.layers.Dropout(dropout))