【问题标题】:What is wrong with this code, why the loss in this code is not reducing?这段代码有什么问题,为什么这段代码的损失没有减少?
【发布时间】:2019-07-26 14:45:31
【问题描述】:

我已经在 tensorflow 中实现了 VGG-16,VGG-16 是相当深的网络,所以损失肯定会减少。但在我的代码中,它并没有减少。 但是当我一次又一次地在同一批次上运行模型时,损失正在减少。任何想法,为什么会发生这样的事情。

VGG-net 来自here

在狗对猫数据集上进行了训练,图像大小为 224x224x3。

网络参数如下:

lr_rate: 0.001 batch_size = 16

查找代码@GitHubGist

输出如下:

【问题讨论】:

  • 每当我的 NN 不学习时,我都会从这个 list 开始并完成它。此外,您的代码缺少一些缩进。
  • @EdgarH 抱歉,缩进是错误的,因为 StackOverflow 不会一次性支持代码部分。所以我将代码段放入代码部分,我想这破坏了缩进。
  • 您可以将您的代码放入 gist(gist.github.com) 并在此处提供链接

标签: python tensorflow deep-learning loss-function vgg-net


【解决方案1】:

我假设您正在关注您链接的 Simonyan 和 Zisserman 论文中的架构变体 E - 然后我发现您的代码存在一些问题:

  • 对所有隐藏层使用activation='relu'

  • 最大池化应在 2 x 2 窗口内完成,因此在池化层中使用 pool_size=[2, 2] 而不是 pool_size=[3, 3]

  • 正确链接pool13conv13

pool13 = tf.layers.max_pooling2d(conv13, [2, 2], 2, name='pool13')

我没有任何可用于测试的 GPU,但通过足够的迭代,损失应该会减少。

【讨论】:

  • 感谢您的审阅,我根据您对我犯的明显错误的建议修改了该代码,但这对我没有帮助,损失仍然没有减少。
猜你喜欢
  • 2015-04-25
  • 2018-09-09
相关资源
最近更新 更多