Caa*_*los 8 machine-learning neural-network deep-learning caffe conv-neural-network
这是我的train.prototxt.这是我的deploy.prototxt.
当我想加载我的部署文件时,我收到此错误:
Run Code Online (Sandbox Code Playgroud)File "./python/caffe/classifier.py", line 29, in __init__ in_ = self.inputs[0] IndexError: list index out of range
所以,我删除了数据层:
Run Code Online (Sandbox Code Playgroud)F1117 23:16:09.485153 21910 insert_splits.cpp:35] Unknown bottom blob 'data' (layer 'conv1', bottom index 0) *** Check failure stack trace: ***
比,我bottom: "data"从conv1层删除.
之后,我收到了这个错误:
Run Code Online (Sandbox Code Playgroud)F1117 23:17:15.363919 21935 insert_splits.cpp:35] Unknown bottom blob 'label' (layer 'loss', bottom index 1) *** Check failure stack trace: ***
我bottom: "label"从损失层中删除了.我收到了这个错误:
Run Code Online (Sandbox Code Playgroud)I1117 23:19:11.171021 21962 layer_factory.hpp:76] Creating layer conv1 I1117 23:19:11.171036 21962 net.cpp:110] Creating Layer conv1 I1117 23:19:11.171041 21962 net.cpp:433] conv1 -> conv1 F1117 23:19:11.171061 21962 layer.hpp:379] Check failed: MinBottomBlobs() <= bottom.size() (1 vs. 0) Convolution Layer takes at least 1 bottom blob(s) as input. *** Check failure stack trace: ***
我该怎么做才能解决它并创建我的部署文件?
Sha*_*hai 17
"火车"原型和"部署"原型之间有两个主要区别:
1.输入:虽然训练数据固定在预处理的训练数据集(lmdb/HDF5等)上,但部署网需要它以更"随机"的方式处理其他输入.
因此,第一个更改是删除输入图层(在TRAIN和TEST阶段推送"数据"和"标签"的图层).要替换输入图层,您需要添加以下声明:
input: "data"
input_shape: { dim:1 dim:3 dim:224 dim:224 }
Run Code Online (Sandbox Code Playgroud)
该声明不提供网络的实际数据,但它告诉网络预期的形状,允许caffe预先分配必要的资源.
2.损失:训练原型中最顶层定义了训练的损失函数.这通常涉及地面真相标签.部署网络时,您无法再访问这些标签.因此,损失层应转换为"预测"输出.例如,"SoftmaxWithLoss"层应转换为简单的"Softmax"层,该层输出类概率而不是对数似然丢失.其他一些损失层已经将预测作为输入,因此仅删除它们就足够了.
更新:有关详细信息,请参阅本教程.
| 归档时间: |
|
| 查看次数: |
9372 次 |
| 最近记录: |