keras 모델 잘라 붙이기

Han Hanju·2021년 10월 13일
0
post-thumbnail
  • 기존 모듈로 제공되는 모델들(BERT나 EfficientNet 등..)을 커스텀 할 필요가 가끔씩 생긴다. 예로 마지막 class_num이 다르다면 마지막 layer는 바꿔줘야 하니까.. 이럴때 유용하게 쓰일 수 있는것이 keras로 모델을 원하는 만큼 자르고 원하는 부분을 커스텀하여 그 부분에 붙여주는 것 이다.

ex)

from tensorflow.keras.optimizers import RMSprop, Nadam
def get_bert_finetuning_model(model):

  inputs = model.inputs[:2]
  dense = model.layers[-3].output

  outputs = keras.layers.Dense(16, activation='sigmoid',
                              name = 'real_output1')(dense)

  outputs = keras.layers.Dense(1, activation='sigmoid',kernel_initializer=keras.initializers.TruncatedNormal(stddev=0.02),
                              name = 'real_output2')(outputs)


  bert_model = keras.models.Model(inputs, outputs)
  # bert_model.compile(
  #     optimizer=RAdam(learning_rate=0.00001, weight_decay=0.0025),
  #     loss='binary_crossentropy',
  #     metrics=['accuracy'])

  bert_model.compile(loss='binary_crossentropy',
              optimizer=Nadam(lr=0.00001, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004),
              metrics=['acc'])
  return bert_model
  
profile
Data Analytics Engineer

0개의 댓글