【发布时间】:2016-09-21 19:19:11
【问题描述】:
EDIT1:我的代码与此处相同,https://github.com/tensorflow/models/blob/master/inception/inception。唯一的区别是我将我的文件打包到 TFRecords 中并以批量方式提供。此外,0 类:1 类的比例为 70:30。
我目前正在开展一个项目,在该项目中我正在使用 inception-V3 CNN 模型来训练分类器。目前,我正在研究一个二元分类器(预测 1 或 0),但是我的模型只预测所有内容的 0 类。在进行故障排除时,我发现 0 类的预测概率始终为 100%。我已经验证了从输入排队系统到评估和测试的所有内容,一切似乎都运行良好。
奇怪的是,损失值以完美的半抛物线方式减少,这让我认为损失已经收敛到局部最小值。在测试脚本后,每次只生成 0 类(概率为 100%)。我注意到的另一件事是,各个 Conv 层的激活始终是恒定的,这可能意味着神经元根本没有放电。
我的问题是, 1. 我的模型有效吗?损失似乎收敛,但各层的激活似乎停滞不前。 2. 我正在使用 tensorflow 的模型部分提供的训练代码 (https://github.com/tensorflow/models/blob/master/inception/inception/inception_train.py)
我正在重用 train、eval 和支持代码,以使用我创建的自定义输入管道(也可以使用)来训练我的模型。有人可以帮助我朝着正确的方向前进吗?
谢谢。
【问题讨论】:
-
看起来你的训练集在 0 类上是不平衡的。不是吗?
-
我同意@nessuno 的评论。如果没有你的代码,它要么是这个,要么是一个错误 - 任何地方,因为你的模型可能是错误的,损失计算可能是错误的,或者几乎是其他任何东西。
-
我已经用更多细节更新了这个问题。
标签: machine-learning tensorflow