【发布时间】:2018-12-12 19:14:17
【问题描述】:
我目前正在编写用于图像压缩的自动编码器。通过previous post,我现在最终确认我不能在 Keras 和 tensorflow 中使用纯 Python 函数作为损失函数。 (我慢慢开始明白为什么了;-)
我想使用ssim 作为损失函数和度量来做一些实验。现在看来我可能是幸运的。 tensorflow 中已经有它的实现,见:https://www.tensorflow.org/api_docs/python/tf/image/ssim
tf.image.ssim( 图像1, 图像2, max_val )
此外,bsautermeister 在 stackoverflow 上提供了一个实现:SSIM / MS-SSIM for TensorFlow。
我现在的问题是:我将如何使用 mnist 数据集作为损失函数?该函数不接受张量,但只接受两个图像。而且,梯度会自动计算吗?据我了解,如果该功能是在 tensorflow 或 keras 后端实现的。
非常感谢提供一个最小工作示例 (MWE),说明如何在 keras 或 tensorflow 中使用任何前面提到的 ssim 实现作为损失函数。
也许我们可以将我的 MWE 用于我之前的问题提供的自动编码器: keras custom loss pure python (without keras backend)
如果无法将我的 keras 自动编码器与 ssim 实现粘合在一起,是否可以使用直接在 tensorflow 中实现的自动编码器?我也有,可以提供吗?
我正在使用 python 3.5、keras(带有 tensorflow 后端),如果需要,可以直接使用 tensorflow。 目前我正在使用mnist dataset(带有数字的那个)。
感谢您的帮助!
(P.S.:似乎有几个人在做类似的事情。对这篇文章的回答可能对Keras - MS-SSIM as loss function 也有用)
【问题讨论】:
标签: python tensorflow keras autoencoder