使用caffe在mnist数据集上训练自动编码器时出了什么问题?

时间:2018-02-22 12:42:40

标签: caffe autoencoder nvidia-digits

我想使用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

问题是什么?

1 个答案:

答案 0 :(得分:1)

出现第一个问题是因为.prototxt有两个名为dataTEST阶段的图层。第一层使用data flatdata,不知道要使用哪个数据 test-to-train < / em>或 test-to-test )。这就是为什么当您使用TEST阶段删除其中一个数据层时,错误不会发生。 修改:我已经检查了解算器文件,并且它有一个test_stage参数,可以在测试文件之间切换,但它在您的情况下显然不起作用。

第二个问题有点难以解决。我对自动编码器的了解有限。在您的迭代过程中,您的欧几里德损失似乎变化很小;我会检查solver.prototxt中的基本学习率并减少它。检查损失如何波动。

除此之外,对于实现低误差的纪元/迭代,您是否检查过输出数据/图像?他们有意义吗?