发新帖

关于loss值异常和训练期间测试的问题

[复制链接]
561 1

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
本帖最后由 星海无尘 于 2018-4-16 11:41 编辑

复制代码
def get_losses(...):
    ...
    style_losses=tf.Variable(0,dtype=tf.float32)
    contant_losses=tf.Variable(0,dtype=tf.float32)
    for i in range(len(out_style)):
        sty_gram=gram(style_feature)
        out_gram=gram(out_style)
        style_losses+=tf.reduce_sum(tf.square((out_gram-sty_gram)/tf.to_float(tf.size(src_style))))

    for i in range(len(src_contant)):
        contant_losses+=tf.reduce_sum(tf.square(out_contant-src_contant))/tf.to_float(tf.size(src_contant))

    return style_losses*200+contant_losses

...
losses=get_losses(...)
train_op=tf.train.AdamOptimizer(learning_rate).minimize(losses,global_step=global_step)
...
_,loss,step=sess.run([train_op,losses,global_step],feed_dict=...)

if step % 10 == 0:
    ...
    '''tensorboard画loss曲线'''


我想做图像风格迁移,用的预训练网络是新出的mobilenet-v2,代码有一小部分参考了github上的,很多都是自己写的损失函数是上面这样定义的,style_losses和contant_losses应该都是正的啊,带了square和reduce_sum,可是计算出来的loss值却到了负值: loss.jpg
训练时输出的值:
step 68580, loss: -8940.207031
step 68600, loss: -9160.783203
step 68620, loss: -9596.508789
step 68640, loss: -9587.704102
step 68660, loss: -9156.574219
step 68680, loss: -9549.836914

20步输出一次,10步画一次
训练初期是正的
不知道为什么损失函数会出现负值,不知各位能否解答一二…


还有第二个问题:
我每1000步输入同一张图片进去测试一下风格迁移的效果,保存输出的图片,但是6w8+步了,输出的图片68张每一张精确到像素分毫不差完全一样…以下是测试的代码:
from PIL import Image# 文件开头导入模块
...
if step % 1000 == 0:
    img=sess.run(out_style,feed_dict={src_image:[test_img]})
    im=Image.fromarray((img[0]).astype(np.uint8))
    im=im.resize((1920,1080))
    im.save(pic_path+'/flower%d.jpg'%step)


先不讨论迁移效果(并不好)...不知是否是我的写法有问题还是哪里出了问题?为什么保存的图片完全一样?(效果并不好就不放上来了,不过我是真的对比了每一张图片...)

新手踩了太多坑
以上,求解答...先谢谢各位。
另:测试版不愧是测试版...


我知道答案 回答被采纳将会获得10 金币 已有1人回答
本楼点评(1) 收起

精彩评论1

lytensor  TF荚荚  发表于 2018-7-10 09:55:05 | 显示全部楼层
这个loss好直
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表