我想使用mnist数据集在caffe和nvidia-digits中训练一个简单的自动编码器。
我有: caffe:0.16.4 数字: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
当我删除''test-on-test''的图层时,我得到一个如下错误的结果: https://screenshots.firefox.com/8hwLmSmEP2CeiyQP/localhost
问题是什么?
答案 0 :(得分:1)
出现第一个问题是因为.prototxt
有两个名为data
和TEST
阶段的图层。第一层使用data
,即 flatdata
,不知道要使用哪个数据( test-to-train < / em>或 test-to-test )。这就是为什么当您使用TEST阶段删除其中一个数据层时,错误不会发生。 修改:我已经检查了解算器文件,并且它有一个test_stage
参数,可以在测试文件之间切换,但它在您的情况下显然不起作用。
第二个问题有点难以解决。我对自动编码器的了解有限。在您的迭代过程中,您的欧几里德损失似乎变化很小;我会检查solver.prototxt
中的基本学习率并减少它。检查损失如何波动。
除此之外,对于实现低误差的纪元/迭代,您是否检查过输出数据/图像?他们有意义吗?