python - 如何在同一 prototxt 中生成用于训练和测试的数据层(HDF5)?

标签 python neural-network deep-learning caffe pycaffe

我有一个 HDF5 类型的数据层。它包含预期的训练和测试阶段

name: "LogisticRegressionNet"
layer {
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  hdf5_data_param {
    source: "examples/hdf5_classification/data/train.txt"
    batch_size: 10
  }
}
layer {
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  hdf5_data_param {
    source: "examples/hdf5_classification/data/test.txt"
    batch_size: 10
  }
}

我想用python来生成它。这是我的代码

import caffe
from caffe import layers as L  # pseudo module using __getattr__ magic to generate protobuf messages
from caffe import params as P  # pseudo module using __getattr__ magic to generate protobuf messages
n = caffe.NetSpec()
n.data, n.label = L.HDF5Data(batch_size=batch_size, source='examples/hdf5_classification/data/train.txt', ntop=2, include={'phase': caffe.TRAIN})
n.data, n.label = L.HDF5Data(batch_size=batch_size, source='examples/hdf5_classification/data/test.txt',ntop=2, include={'phase': caffe.TEST})

但是,我的输出只是测试阶段。我该如何修复它?谢谢

layer {
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  hdf5_data_param {
    source: "examples/hdf5_classification/data/test.txt"
    batch_size: 2
  }
}

最佳答案

这是一个悬而未决的问题in caffe (您可以在那里找到其他相关 SO 线程的链接)。

你可以做的是编写两个prototxt,一个用于训练,一个用于测试。 solver.prototxt支持定义训练网文件名和测试网文件名。

关于python - 如何在同一 prototxt 中生成用于训练和测试的数据层(HDF5)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42289880/

相关文章:

python - 从嵌套列表 Python 中删除项目

python - 维数错误 : expected 3, 得到 2 形状 (119, 80)

c++ - 咖啡转换图像集 : symbol lookup error

machine-learning - 神经网络可以比标记的训练集表现得更好吗?

python - 我是否在 pytorch 中使用多项式回归?

python - networkx库的函数dfs_edges无法找到所有边

python - 如何在边缘列表中找到所有派系

python - 在 python 包中包含非 python 文件

python - 在 Tensorflow 中重新初始化变量

python - BERT分类器中每个标签的预测概率