【发布时间】:2018-08-22 23:53:22
【问题描述】:
我在 tensorflow 中遇到了一些(对我来说)有点奇怪的事情,希望有人能对这种情况有所了解。
我有一个处理图像的简单神经网络。我最小化的成本函数是简单的 MSE。
起初我实现了以下内容:
cost = tf.square(DECONV - Y)
然后我将其传递给我的优化器,如下所示:
optimizer = tf.train.RMSPropOptimizer(learning_rate).minimize(cost)
我能够通过这个实现获得很好的结果。然而,当我尝试实现正则化器时,我意识到我并没有将标量值传递给 optimizer.minimize(),而是实际上传递了一个形状为 [batch, dim_x, dim_y] 的张量。
我将实现更改为以下内容:
cost = tf.losses.mean_squared_error(Y, DECONV)
还有很多这样的变体:
cost = tf.reduce_mean(tf.square(tf.subtract(DECONV, Y)))
等等
我的问题是,对于 MSE 的这些新实现,我什至无法接近使用原始“错误”实现获得的结果。
原始方式是一种有效的训练方式吗?如果是这样,我该如何实现正则化器?如果没有,我在新实现中做错了什么?为什么我不能复制结果?
【问题讨论】:
标签: python tensorflow deep-learning conv-neural-network