我是新来的深度学习。当我使用caffe时,发现有两个prototxt文件,一个是“deploy”,另一个是“train_val”。
我知道“train_val”用于训练模型。但是对于“部署”文件,有些人表示这是为了测试映像。
所以,我的问题是“部署”只有forward()
网络,所以测试图像数据只通过转发网络一次得分?转发CNN的网络
转发CNN的网络
回答
正如您已经注意到的那样,有一些fundamental differences between 'train_val.prototxt'
and 'deploy.prototxt'
。
一个关键的区别是'deploy.prototxt'
通常缺少任何损失层。
当你没有为网络定义的损失函数时,没有后向传播的意义:你会传播什么梯度?什么函数的渐变?
因此,caffe中的net
对象具有backward()
所有阶段实现的方法。尽管如此,当您测试没有损失函数的网络时(仅预测),这种方法是毫无意义的。
理想情况下,它应该如何工作,但文件只是网络定义。您可以使用单个文件进行训练和测试。您必须指定要使用某些Blob的阶段,这意味着您可以定2 inputData层,一个将在训练期间被使用,并且另一个用于测试和指定相应的相位是这样的:
name: "MyModel"
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
mirror: false
crop_size: 227
mean_file: "data/train_mean.binaryproto" # location of the training data mean
}
data_param {
source: "data/train_lmdb" # location of the training samples
batch_size: 128 # how many samples are grouped into one mini-batch
backend: LMDB
}
}
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
在训练期间,先前层将被使用,其中所述第二将被忽略。 在测试阶段,第一层将被忽略,第二层将被用作测试的输入。
另一点是,在测试过程中,我们需要我们预测的准确度,因为我们并不需要更新了我们的权重 升
layer {
name: "accuracy"
type: "Accuracy"
bottom: "fc8"
bottom: "label"
top: "accuracy"
include {
phase: TEST
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc8"
bottom: "label"
top: "loss"
}
如果include指令没有给出,该层包括在所有阶段。
虽然您也可以在训练过程中包含准确性层以查看输出是如何进行的(即:为了在多少次迭代后测量准确度改进),我们需要更多的预测。在求解 ,您可以指定test_iter
后多少迭代测试操作进行指定(您验证模型中的每个test_iter迭代)
train_val和部署文件这两个阶段分成两个不同的files.All规范train_val与训练阶段有关。并部署测试。我不确定,train_val组合来自哪里,但我想这是因为你可以在test_iter之后验证你的模型,并继续从那里继续训练。 由于在测试过程中您不需要损失,而不是概率,所以可以使用softmax代替概率输出函数,而不是部署中的softmaxwithloss,或者您可以同时定义这两个函数。 caffe测试命令执行正向操作,但不执行反向()(反向传播)操作。我希望它有帮助
- 1. 在keras中建立CNN网络?
- 2. 转发到同一网络
- 3. 神经网络(CNN)的解释结果/准确性
- 4. keras cnn网络中的预期输出尺寸
- 5. 在sklearn神经网络中训练CNN图像
- 6. Java网络开发
- 7. c#网络发现
- 8. Erlang网络发布
- 9. Java网络发现
- 10. 云中的网络开发
- 11. .NET中的网络发现
- 12. 通过网络发送的
- 13. Tensorflow CNN网络中使用基于三元组的训练时的丢失
- 14. 端到端时尚卷积神经网络(CNN)的含义是什么?
- 15. 如何获得倒数第二层的值卷积神经网络(CNN)?
- 16. 像CNN这样的神经网络求和与连接有什么区别?
- 17. 经纪人的ActiveMQ网络的存储和转发
- 18. 转到网络编程库
- 19. 转换网络掩码php
- 20. 转换为网络图
- 21. PHP IP到网络转换
- 22. 通过网络内的网络发送数据
- 23. 对节点网络服务器的Apache转发请求
- 24. 网络游戏/其他服务的端口转发?
- 25. 转发与iptables和differents网络接口的MySQL连接
- 26. 如何获取Mozilla开发者网络站点的转储
- 27. 在大学网络上转发Raspberry Pi 3的端口
- 28. 通过网络发送的java转换整数
- 29. Android:网络服务发现
- 30. 在网络上发布UIImage