load_model() 함수를 사용하면, h5 또는 hdf5로 저장된 모델 구조, 가중치를 한꺼번에 불러올 수 있습니다.
model = load_model('your saved model path')
그런데 만약 모델에 커스텀 객체가 포함되어 있다면, 커스텀 객체를 명시해주지 않는 경우 다음과 같은 에러가 발생할 수 있습니다.
이를 알아보기 전에, 케라스에서 커스텀 객체를 선언하는 방법은 다음과 같습니다.
커스텀 객체 선언
def Mish(x):
return x * K.tanh(K.softplus(x))
get_custom_objects().update({'mish': Mish})
Mish Activation 함수를 커스텀 객체로 선언하고 사용한 모델을 load_model() 함수를 사용하여 불러올 때, 커스텀 객체를 명시해주지 않으면(인자로 전달하지 않으면) 다음과 같은 에러를 만날 수 있습니다.
ex) Mish Activation 함수를 커스텀 객체로 선언하고 사용한 모델일 경우
ValueError: Unknown activation function:Mish
모델에선 Mish Activation 함수를 사용하여 구조가 형성되어 있는데, 로드시 이에 대한 정보를 넘겨주지 않았기 때문에 발생합니다. 따라서, 이를 해결하기 위해 다음과 같이 인자로 전달해주면 쉽게 해결할 수 있습니다.
커스텀 객체를 포함한 모델 로드
model = load_model('./model/saved_model.hdf5', custom_objects={'Mish':Mish}
'Mish'는 커스텀 객체 선언 시 사용한 객체의 이름이고, Mish는 해당 객체를 넘겨주는 것입니다.
'# Machine Learning > Keras Implementation' 카테고리의 다른 글
Albumentation 사용해서 Augmentation하기 (0) | 2020.08.25 |
---|---|
Learning Rate: Cosine Annealing (1) (0) | 2020.07.31 |
케라스 layer 시각화하기 (visualization) (0) | 2020.03.27 |
keras custom generator - 2 (0) | 2020.01.31 |
Keras, 1x1 Convolution만 사용해서 MNIST 학습시키기 (0) | 2019.11.05 |