问题标签 [caffe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
computer-vision - Caffe LENET 或 Imagenet 模型中的参数数量
如何计算模型中的参数数量,例如用于 mnist 的 LENET,或用于 imagent 模型的 ConvNet 等。caffe 中是否有任何特定函数可以返回或保存模型中的参数数量。问候
linux - caffe 重新编译 libgflags.a 并出现 -fPIC 错误
当我尝试在 Linux Ubuntu 64 上安装 Caffe 时出现错误。错误如下:
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): 重定位 R_X86_64_32S 反对 `.rodata' 在制作共享对象时不能使用;使用 -fPIC
/usr/local/lib/libgflags.a 重新编译:添加符号时出错:值错误
我尝试用 重新编译 gflags 库-fPIC
,但错误变为如下:
src/caffe/common.cpp: 在函数'void caffe::GlobalInit(int*, char***)':
src/caffe/common.cpp:35:5: 错误: '::gflags' 没有被声明
::gflags::ParseCommandLineFlags(pargc, pargv, true);
我还尝试将 caffe 的 CMakeCache.txt 更改为设置-fPIC
,但也不起作用。
c++ - 解决类别不平衡:对损失和 sgd 的贡献比例缩放
(已添加对此问题的更新。)
我是比利时根特大学的研究生;我的研究是关于深度卷积神经网络的情绪识别。我正在使用Caffe框架来实现 CNN。
最近我遇到了一个关于班级不平衡的问题。我正在使用大约 9216 个训练样本。5% 标记为阳性 (1),其余样本标记为阴性 (0)。
我正在使用SigmoidCrossEntropyLoss层来计算损失。训练时,即使经过几个 epoch,损失也会减少,准确率非常高。这是由于不平衡造成的:网络总是简单地预测负数(0)。(精确度和召回率都为零,支持这一说法)
为了解决这个问题,我想根据预测真相组合来衡量对损失的贡献(严厉惩罚假阴性)。我的导师/教练还建议我在通过随机梯度下降 (sgd)反向传播时使用比例因子:该因子与批次中的不平衡相关。仅包含负样本的批次根本不会更新权重。
我只向 Caffe 添加了一个定制层:报告其他指标,例如精度和召回率。我在 Caffe 代码方面的经验有限,但我在编写 C++ 代码方面拥有丰富的专业知识。
任何人都可以帮助我或指出正确的方向如何调整SigmoidCrossEntropyLoss和Sigmoid层以适应以下变化:
- 根据预测-真值组合(真阳性、假阳性、真阴性、假阴性)调整样本对总损失的贡献。
- 根据批次中的不平衡(负数与正数)缩放随机梯度下降执行的权重更新。
提前致谢!
更新
我已按照Shai的建议合并了InfogainLossLayer。我还添加了另一个自定义层,它H
根据当前批次中的不平衡构建信息增益矩阵。
目前,矩阵配置如下:
我计划在未来尝试不同的矩阵配置。
我已经在 10:1 的不平衡情况下对此进行了测试。结果表明,网络现在正在学习有用的东西:(30 epochs 后的结果)
- 准确度约为。~70%(低于 ~97%);
- 精度约为。~20%(从 0% 上调);
- 召回是大约。~60%(从 0% 上调)。
这些数字是在大约 20 个 epoch 时达到的,之后没有显着变化。
!!上述结果只是一个概念证明,它们是通过在 10:1 不平衡数据集上训练一个简单的网络获得的。!!
machine-learning - 求解器参数“test_iter”在测试阶段更改标签值
我正在使用Caffe框架来构建和研究卷积神经网络。
我偶然发现(我相信是)一个错误。(我已经在Github上报告过了。)
这就是问题所在:在测试阶段,标签值会根据test_iter
参数的值(在求解器.prototxt
文件中定义)而改变。
我正在使用 10240 张图像来训练和测试网络。每个图像有 38 个标签,每个标签可以有两个(0 或 1)值。我正在使用 HDF5 文件格式将图像数据和标签导入 Caffe;每个文件存储 1024 张图像及其各自的标签。(我检查了 HDF5 文件,那里的一切都是正确的。)
我使用 9216(= 9 个文件)图像进行训练,使用 1024(= 1 个文件)进行测试。我的 Nvidia 540M 显卡只有 1GB 内存,这意味着我必须批量处理(通常每批 32 或 64 张图像)。
我正在使用以下网络来复制问题:
该网络仅输出所有标签值。我正在为此网络使用以下求解器:(主要从我的真实网络复制。)
batch_size
通过改变和test_iter
参数获得以下结果。根据本教程,batch_size
测试数据和test_iter
求解器中的数据应该平衡,以确保在测试期间使用所有测试样本。就我而言,我会确保batch_size * test_iter = 1024
.
这些是我更改值时的结果
batch_size = 1024, test_iter = 1
::一切都很好。
batch_size = 512, test_iter = 2
:“1”的标签更改为“0.50”。
batch_size = 256, test_iter = 4
:“1”的标签更改为“0.50”或“0.25”
batch_size = 128, test_iter = 8
:“1”的标签更改为“0.50”或“0.25”或“0.125”
[...]:
模式继续。
发生了什么会在测试期间影响标签的值?我只是解释了使用batch_size
和test_iter
错误,还是我错过了其他东西?
matlab - 将数据转换为 caffe 的 leveldb
我在 Matlab 中有一堆二维数据矩阵(没有图像数据,但有一些单精度数据)。
有谁知道如何将 2D matlab 矩阵转换为 caffe 训练自定义神经网络所需的 leveldb 格式?
我已经完成了关于如何训练图像(使用 imagenet 架构)和 mnist(数字识别数据集)的教程。但是在后一个示例中,他们没有展示如何创建相应的数据库。在教程中已经提供了数据库。
c++ - Caffe 中的 Armadillo 用于伪逆和转置
我需要伪逆和转置函数来在 caffe 中实现一个图层。所以我正在使用 Armadillo 库来做到这一点。但是如何将 Caffe Blobs(2-D) 转换为犰狳垫,反之亦然?
caffe - Caffe 层注册错误
我是 Caffe 新手,运行 Caffe mnist 示例时遇到问题。错误信息如下:
我已经搜索了解决方案并尝试按照本文中的建议链接动态库。但是它不起作用。我可以看到已知层是空的。可能是什么原因?请帮帮我。谢谢。我正在使用 Ubuntu 15.04。
python - 无法将caffe导入python,找不到libjpeg.so.62
我无法将 caffe 导入(anaconda-)python。我正在关注关于“非图像 HDF5 数据的逻辑回归”的笔记本示例。当我执行该行时
我收到以下错误:
该库libjpeg.so.62
明确安装在/usr/lib/i386-linux-gnu/libjpeg.so.62
. 我不知道这里出了什么问题,也不知道如何告诉 anacondapython 在哪里寻找libjpeg.so.62
.
我已经尝试过了,sudo apt-get install libjpeg62:i386
但 apt-get 说"libjpeg62:i386 is already the newest version. libjpeg62:i386 set to manually installed."
我在修改“Makefile.config”时编译了 caffe,使其指向 ananconda python 路径。我还导出了我的 anaconda 目录的 PYTHONPATH 和 PATH: