Пользовательская функция потерь Keras с ошибкой 5 параметров: у объекта 'function' нет атрибута 'get_shape' - PullRequest
0 голосов
/ 25 марта 2019

Я должен написать свои собственные функции потерь с 5 параметрами в Керасе. Прочитав некоторые обходные пути, я решил использовать внутренние функции следующим образом:

W = 5            

def mycrossentropy(W, W_pre, lam=0.03):
   def loss(y_true, y_pre):
      loss_1 = K.categorical_crossentropy(y_true, y_pre)
      loss_2 = lam*((K.sum(W_pre) - W)**2)
      return loss_1 + loss_2
   return loss

Когда я хочу загрузить модель с keras.model.load_model, я получил AttributeError: у объекта 'function' нет атрибута 'get_shape', ошибка при выполнении функции model.compile. Вывод всей ошибки следующим образом:

Traceback (most recent call last):
  File "d:/_Learning/_Code/AutoEncoder_Binary/AutoEncoder_Sq.py", line 105, in <module>
    autoencoder = load_model("autoencoder.h5",custom_objects={"delta":delta,"loss":mycrossentropy})
  File "D:\Anaconda3\lib\site-packages\keras\engine\saving.py", line 419, in load_model
    model = _deserialize_model(f, custom_objects, compile)
  File "D:\Anaconda3\lib\site-packages\keras\engine\saving.py", line 312, in _deserialize_model
    sample_weight_mode=sample_weight_mode)
  File "D:\Anaconda3\lib\site-packages\keras\engine\training.py", line 342, in compile
    sample_weight, mask)
  File "D:\Anaconda3\lib\site-packages\keras\engine\training_utils.py", line 417, in weighted
    ndim = K.ndim(score_array)
  File "D:\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 619, in ndim
    dims = x.get_shape()._dims
AttributeError: 'function' object has no attribute 'get_shape'

Составная часть:

model.compile(loss=[mycrossentropy(W=W, W_pre=model.layers[3].output)],           
              optimizer=optimizer, 
              metrics=['accuracy'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...