培训acc减少,验证-增加。培训损失,验证损失减少

时间:2019-01-25 15:48:58

标签: python tensorflow machine-learning keras deep-learning

我正在尝试实施LRCN,但是我在培训方面遇到障碍。目前,我仅尝试单独训练CNN模块,然后将其连接到RNN。 您在下面看到的结果是到目前为止我可能获得的最好的结果。问题在于,除了训练的准确性外,其他一切似乎都进展顺利。它正在逐渐下降。

我的模型在FC层之间存在急剧下降,所以这可能是一个原因,但是,您仍然认为这些结果有问题吗?如果它们继续趋势,我应该如何改变?

要预测的数字类为3。代码用Keras编写。

  

Epoch 1/20 16602/16602 [=============================]-2430秒   146毫秒/步-丢失:1.2583-acc:0.3391-val_loss:1.1373-val_acc:   0.3306

     

Epoch 00001:val_acc从-inf改进为0.33058,将模型保存为   重量.01-1.14.hdf5时代2/20 16602/16602   [=============================]-2441s 147ms / step-loss:1.1998-   acc:0.3356-val_loss:1.1342-val_acc:0.3719

     

Epoch 00002:val_acc从0.33058改进为0.37190,将模型保存为   weights.02-1.13.hdf5时代3/20 8123/16602   [============> .......]-预计到达时间:20:30-损失:1.1889-帐户:   0.3325

我还有2个简短的问题,暂时无法回答。

  1. 为什么我从自定义视频数据生成器输出的张量的尺寸为(4, 288, 224, 1),但是我的输入形状的图层却生成为(None, 288, 224, 1)?为了澄清形状,我将在非时间分布的CNN中将包含单个图像的4个批次进行分类。我使用功能性API。
  2. 稍后,当我训练RNN时,我将必须按时间步长进行预测,然后对它们进行平均,然后选择最佳预测作为我的整体模型预测的预测。 metrics ['accuracy']是这样做还是我需要自定义指标函数?如果是后者,我该如何根据Keras doc. the results from evaluating a metric are not used when training the model来写一个。为此,我是否需要自定义目标(损失)功能?

任何帮助,我们都会非常感谢您的专业知识,我真的很需要它。预先谢谢你!

1 个答案:

答案 0 :(得分:1)

只要损失不断下降,准确性最终就会开始增长。由于您只训练了2-3个纪元,因此精度可能会波动是正常的。

关于您的其他问题:

  1. 层的输入形状的概念是(batchSize, dim1, dim2, nChannels)。由于您的模型在训练None之前不知道批次大小,因此可以用作占位符。图片尺寸似乎是正确的,“通道数”为1表示您不使用彩色图片,因此每个像素只有一个条目。
  2. 我认为准确度指标应该可以用,但是我没有RNN的经验,所以也许有人可以回答这个问题。