machine-learning - 如何制作非静态的Caffe网络架构?

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

我想在 Caffe 中实现一个神经网络架构,它将根据某些可迭代变量执行不同的操作。例如:完整网络可能会使用 10 层进行 5 次训练或测试迭代中的 4 次,但对于所有其他迭代,它将截断网络并仅使用最后 5 层。当然,这需要第一层的输入和第五层的输入具有相同的维度,但我的主要问题是如何在训练/测试期间实现两种架构之间的切换。

最佳答案

我想你可以使用 pycaffe 和 caffe.NetSpec() 来做到这一点,但这不会是一个非常好的代码......
另一方面,为什么不训练整个网络的 i 次迭代,保存快照,然后使用您保存的快照“热启动”简化模型?
即:将 'full_trainval.prototxt''full_solver.prototxt' 配置为训练 i 次迭代的完整网络,并且 'top_trainval.prototxt''top_solver.prototxt' 配置为仅训练网络的顶层。然后

~$ $CAFFE_ROOT/build/tools/caffe train -solver full_solver.prototxt

此阶段结束后,请确保保存了最终的 sanpshot,然后

~$ $CAFFE_ROOT/build/tools/caffe train -solver top_solver.prototxt -snapshot full_train_last_snapshot.solverstate

最后,您可以使用 net_surgery将两个阶段的权重合并到一个完整的网络中。

关于machine-learning - 如何制作非静态的Caffe网络架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969810/

相关文章:

python - caffe 中的 `"Python"` 层是什么?

python - Keras 多输入网络,使用图像和结构化数据 : How do I build the correct input data?

machine-learning - 除了深度学习以外,还有什么方法可以使问答机器人更好地表现?

machine-learning - 嵌入层和密集层有什么区别?

python - 如何仅将权重设置为 keras 中神经元前半部分的层?

python - 使用 Keras 和 TensorFlow 实现 LSTM 网络

tensorflow - 为什么 Keras 中的 plot_model 不能正确绘制模型?

machine-learning - 开放评分 + PMML

machine-learning - 用于聚类任务的多标签分类 "weighted labels"

neural-network - 使用预训练的词嵌入 - 如何为未知/OOV token 创建向量?