从 caffe 二进制库调用 python 时获取 caffe 中间结果
Get caffe intermediate result when calling python from caffe binary lib
我正在使用 python caffe 的界面。在层实现文件 softmax_loss_layer.cu 中,mini-batch 中每个样本的损失将被相加并除以 batch size。所以 "softmaxlosslayer"
的输出是小批量的平均损失。
我想要的是获取存储在 *loss_data
中的每个样本的损失,但是当我尝试使用 std::cout
或 fstream
时,没有任何反应。所以我认为事情变成了从 python.
调用 c++ 时如何从 c++ 二进制库中获取输出
非常感谢!
caffe 正在使用 glog 库进行日志记录。如果你想输出一些东西,你应该需要使用glog
的宏。例如:
GLOG(INFO) << "something to be printed";
当 运行 编译您的代码时,您需要确保环境变量 GLOG_minloglevel
设置为包含您想要的日志级别。也就是说,如果你写了一个级别为INFO
的日志,那么你需要设置GLOG_minloglevel=1
(或0
,但不能超过)
有关 glog 日志记录的详细信息,请参阅 此 "how to" 页面 。
注意:您正在尝试从 softmax_loss_layer.cu
代码获取输出:此代码在 GPU 上是 运行,因此您可能预计从中获取输出会遇到一些困难。如果你只是调试,你可以考虑调整 softmax_loss_layer.cpp
代码而不是 运行 在 CPU
模式:即设置 caffe.set_mode_cpu()
我正在使用 python caffe 的界面。在层实现文件 softmax_loss_layer.cu 中,mini-batch 中每个样本的损失将被相加并除以 batch size。所以 "softmaxlosslayer"
的输出是小批量的平均损失。
我想要的是获取存储在 *loss_data
中的每个样本的损失,但是当我尝试使用 std::cout
或 fstream
时,没有任何反应。所以我认为事情变成了从 python.
非常感谢!
caffe 正在使用 glog 库进行日志记录。如果你想输出一些东西,你应该需要使用glog
的宏。例如:
GLOG(INFO) << "something to be printed";
当 运行 编译您的代码时,您需要确保环境变量 GLOG_minloglevel
设置为包含您想要的日志级别。也就是说,如果你写了一个级别为INFO
的日志,那么你需要设置GLOG_minloglevel=1
(或0
,但不能超过)
有关 glog 日志记录的详细信息,请参阅 此 "how to" 页面 。
注意:您正在尝试从 softmax_loss_layer.cu
代码获取输出:此代码在 GPU 上是 运行,因此您可能预计从中获取输出会遇到一些困难。如果你只是调试,你可以考虑调整 softmax_loss_layer.cpp
代码而不是 运行 在 CPU
模式:即设置 caffe.set_mode_cpu()