【发布时间】:2016-05-02 15:54:23
【问题描述】:
是否可以即时更改ImageData 层或MemoryData 层的输入源?
我正在尝试在每个时期都对数据进行洗牌,但我同时拥有图像和一些其他非图像特征,我想在网络的稍后阶段将它们连接起来。我找不到一种可靠的方法来随机播放图像和我的其他数据,同时保持两者的对齐。
所以,我正在考虑在每个时期重新生成imagelist.txt 以及非图像数据(在内存中),并将新文件附加到ImageData 层并使用新数据初始化MemoryDataLayer。
如何确保在不重新启动训练过程的情况下使用新文本文件重新初始化网络。 (我希望网络在同一阶段继续训练,动量等,只开始从新文件而不是最初编译的文件中读取图像文件)。
layer {
name: "imgdata"
type: "ImageData"
top: "imgdata"
top: "dlabel"
transform_param {
# Transform param here
}
image_data_param {
source: "path to imagelist.txt" ## This file changes after n iterartions
batch_size: XX
new_height: XXX
new_width: XXX
}
}
同样,我希望能够将重新洗牌的数据复制到MemoryData 层。我可以在培训期间拨打Net.set_input_arrays 吗?
layers {
name: "data"
type: MEMORY_DATA
top: "data"
top: "label"
memory_data_param {
batch_size: XX
channels: X
height: XXX
width: XXX
}
【问题讨论】:
-
你考虑过使用 PythonLayer 吗?
-
感谢您的评论。即使使用 python 编写的图层,我也不确定如何在洗牌时对齐图像和非图像数据。
-
你可以在 Python 层中做任何事情。单层的所有输入
-
我不明白。我的两个不同的数据流问题仍然存在。特别是当我需要定期洗牌时。你能给我一个简单的伪代码吗?
标签: computer-vision deep-learning caffe conv-neural-network