- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
系统信息
操作系统平台和发行版:Ubuntu 16.04 LTS
从(源代码或二进制文件)安装的 TensorFlow:二进制文件
TensorFlow 版本(使用下面的命令):1.12.0
Python版本:3.5.2
CUDA/cuDNN 版本:发布 9.0,V9.0.176
GPU 型号和内存:Tesla K80,12 GB
描述当前行为
当我尝试使用 model.save()
保存我的模型时其中模型是 tf.keras.Model
例如,它抛出一个 TypeError: ('Not JSON Serializable:', <tf.Variable 'Variable:0' shape=() dtype=float32>)
.
我正在使用 tf.keras.backend.variable()
在 loss_weights 中 model.compile
.
优化器:tf.keras.optimizers.Adam
有趣的是,当我尝试仅使用 model.save_weights
保存模型权重时其中模型是 tf.keras.Model
例如,它工作正常,没有错误。
重现问题的代码
alpha = tf.keras.backend.variable(0.25)
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>)
最佳答案
model.save
正在尝试保存 tf.Variable
这不是 JSON 可序列化的。model.fit
保存所有内容,而不仅仅是模型权重。当我的优化器有一个 tf.Tensor
时,我已经看到了这个问题。不能序列化。
一切都指向alpha
在这种情况下成为你的问题。还有 model.compile
的文档声明 loss_weights
应该是一个 Python 浮点数。
所以使用 alpha.numpy()
应该可以解决您的问题:
model.compile(optimizer=optimizer,loss={"softmax1":generalized_dice_loss,"softmax2":generalized_dice_loss}, loss_weights=[1.0,alpha.numpy()])
关于python-3.x - TypeError : 'Not JSON Serializable' while doing tf. keras.Model.save 并在 tf.keras.Model.compile 的 loss_weights 中使用 keras 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56186384/
我是一名优秀的程序员,十分优秀!