我想使用mnist数据集在caffe和nvidia-digits中训练一个简单的自动编码器。
我有:caffe:0.16.4 DIGITS:5.1 python 2.7
我使用这里提供的结构:https://github.com/BVLC/caffe/blob/master/examples/mnist/mnist_autoencoder.prototxt
然后我面临两个问题:
Traceback (most recent call last):
File "digits/scheduler.py", line 512, in run_task
task.run(resources)
File "digits/task.py", line 189, in run
self.before_run()
File "digits/model/tasks/caffe_train.py", line 220, in before_run
self.save_files_generic()
File "digits/model/tasks/caffe_train.py", line 665, in save_files_generic
'cannot specify two val image data layers'
AssertionError: cannot specify two val image data layers
问题是什么??
出现第一个问题是因为.prototxt
有两个名为data
和TEST
阶段的层。使用data
的第一层,即flatdata
,不知道使用哪种数据(测试到训练或测试到测试)。这就是为什么当您使用TEST阶段删除其中一个数据层时,错误不会发生。编辑:我已经检查了解算器文件,它有一个test_stage
参数,应该在测试文件之间切换,但它显然不适用于您的情况。
第二个问题有点难以解决。我对自动编码器的了解有限。在您的迭代过程中,您的欧几里德损失似乎变化很小;我会检查你的solver.prototxt
的基本学习率并减少它。检查损失如何波动。
除此之外,对于实现低误差的时期/迭代,您是否检查过输出数据/图像?他们有道理吗?