TypeError: «Не JSON Serializable» при выполнении tf.keras.Model.save и использовании переменной keras в loss_weights в tf.keras.Model.compile - PullRequest
1 голос
/ 17 мая 2019

Системная информация

Платформа ОС и ее распространение: Ubuntu 16.04 LTS

TensorFlow установлен из (источника или двоичного файла): двоичный файл

Версия TensorFlow (используйте команду ниже): 1.12.0

Версия Python: 3.5.2

Версия CUDA / cuDNN: выпуск 9.0, V9.0.176

Модель GPU и память: Tesla K80, 12 ГБ

Опишите текущее поведение

Когда я пытаюсь сохранить мою модель, используя model.save(), где модель является экземпляром tf.keras.Model, она выдает TypeError: ('Not JSON Serializable:', <tf.Variable 'Variable:0' shape=() dtype=float32>).

Я использую tf.keras.backend.variable() в потерях_веса в model.compile.

Оптимизатор: tf.keras.optimizers.Adam

Интересно, что когда я пытаюсь сохранить вес модели только с использованием model.save_weights, где модель является экземпляром tf.keras.Model, она работает нормально, ОШИБКА НЕ.

Код для воспроизведения вопроса

alpha = tf.keras.backend.variable(0.25)

Код любой модели, используя tf.keras

model= get_model() 

model.compile(optimizer=optimizer,loss={"softmax1":generalized_dice_loss,"softmax2":generalized_dice_loss}, loss_weights=[1.0,alpha]) 

Тренируйтесь, используя model.fit() -

model.save()

Другая информация / журналы

Traceback (most recent call last):  

File "main_latest.py", line 45, in 

max_queue_size=10)  

File "/home/tejal/.local/lib/python3.5/site-packages/tensorflow/python/keras/engine/training.py", line 2177, in fit_generator

initial_epoch=initial_epoch)    

File "/home/tejal/.local/lib/python3.5/site-packages/tensorflow/python/keras/engine/training_generator.py", line 216, in fit_generator  

callbacks.on_epoch_end(epoch, epoch_logs)  

File "/home/tejal/.local/lib/python3.5/site-packages/tensorflow/python/keras/callbacks.py", line 214, in on_epoch_end

callback.on_epoch_end(epoch, logs)    

File "/home/tejal/.local/lib/python3.5/site-packages/tensorflow/python/keras/callbacks.py", line 601, in on_epoch_end

self.model.save(filepath, overwrite=True)  

File "/home/tejal/.local/lib/python3.5/site-packages/tensorflow/python/keras/engine/network.py", line 1363, in save

save_model(self, filepath, overwrite, include_optimizer)  

File "/home/tejal/.local/lib/python3.5/site-packages/tensorflow/python/keras/engine/saving.py", line 134, in save_model

default=serialization.get_json_type).encode('utf8')  

File "/usr/lib/python3.5/json/init.py", line 237, in dumps

**kw).encode(obj)  

File "/usr/lib/python3.5/json/encoder.py", line 198, in encode

chunks = self.iterencode(o, _one_shot=True)  

File "/usr/lib/python3.5/json/encoder.py", line 256, in iterencode

return _iterencode(o, 0)  

File "/home/tejal/.local/lib/python3.5/site-packages/tensorflow/python/util/serialization.py", line 64, in get_json_type  

raise TypeError('Not JSON Serializable:', obj)  

TypeError: ('Not JSON Serializable:', <tf.Variable 'Variable:0' shape=() dtype=float32>)

1054 *

Скриншот ошибки: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...