【问题标题】:How to compute epoch from iteration number using HDF5 layer?如何使用 HDF5 层从迭代次数计算 epoch?
【发布时间】:2017-09-02 05:52:19
【问题描述】:

我正在使用带有 HDF5 层的 caffe。它会将我的 hdf5list.txt 读取为

/home/data/file1.h5
/home/data/file2.h5
/home/data/file3.h5

在每个文件*.h5 中,我有 10.000 张图像。所以,我总共有大约 30.000 张图像。在每次迭代中,我将使用批量大小为 10 作为设置

layer {
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "./hdf5list.txt"
    batch_size: 10
    shuffle: true
  }
  include {
    phase: TRAIN
  }
}

使用caffe,输出喜欢

Iterations 10, loss=100
Iterations 20, loss=90
...

我的问题是如何计算时期的数量,关于损失?这意味着我想绘制一个图表,x 轴是纪元数,y-asix 是损失。

相关链接:Epoch vs iteration when training neural networks

【问题讨论】:

    标签: machine-learning neural-network deep-learning caffe


    【解决方案1】:

    如果您只想针对当前问题执行此操作,则非常简单。请注意,

    Epoch_index = floor((iteration_index * batch_size) / (# data_samples))
    

    现在,在 solver.cpp 中,找到 Caffe 打印 Iterations ..., loss = ... 的行。只需使用上述公式计算 epoch index 并打印出来。你完成了。不要忘记重新编译 Caffe。

    如果您想修改 Caffe 使其始终显示 epoch 索引,那么您首先需要计算所有 HDF5 文件的数据大小。通过浏览Caffe HDF5层代码,我想你可以通过hdf_blobs_[0]->shape(0)得到数据样本的数量。您应该为所有 HDF5 文件添加此编号,并在 solver.cpp 中使用该编号。

    变量hdf_blobs_layers/hdf5_data_layer.cpp 中定义。我相信它填充在函数util/hdf5.cpp 中。我认为流程是这样的:

    1. layers/hdf5_data_layer.cpp 中,hdf5 文件名是从文本文件中读取的。
    2. 然后函数 LoadHDF5FileData 尝试将 hdf5 数据加载到 blob 中。
    3. LoadHDF5FileData 内部,声明了blob 变量hdf_blobs_,并在函数util/hdf5.cpp 中填充它。
    4. util/hdf5.cpp 内部,函数hdf5_load_nd_dataset 首先调用hdf5_load_nd_dataset_helper,从而相应地重塑blob。我认为这是您将为一个 hdf5 文件获取数据尺寸的地方。在layers/hdf5_data_layer.cppvoid HDF5DataLayer<Dtype>::Next() 函数中完成对多个hdf5 文件的迭代。所以这里需要把之前收到的数据维度加起来。

    最后,您需要弄清楚如何将它们传递回solver.cpp

    【讨论】:

    • 感谢 Parag,这是一个不错的解决方案。但是,如您所见,我的 hdf5 文件存储在文本列表文件中。你认为我们可以从hdf_blobs_[0]->shape(0). 获得文件总数吗?
    • 我就是这么说的。如果您只需要针对此问题的解决方案,那么您知道您的数据样本数量,并且您不必使用 hdf_blobs 等。有关您的问题的详细信息,请参阅我的编辑。
    • 谢谢,我会试试的。您是否尝试过打印纪元号。我不知道为什么 caffe 没有这个选项,而其他深度学习工具有这个选项。
    • 不,我没有尝试打印一个纪元。如果您只想为一个问题/一次执行此操作,我的建议是对样本数量进行硬编码。
    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 2015-05-18
    • 1970-01-01
    • 2013-01-07
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多