问题标签 [pycaffe]
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.
python - 如何通过一些参数重建一个caffemodel?
我遇到了一个问题,我有一个稀疏矩阵存储版本的神经网络,这意味着我只有一些参数和它的索引,比如它属于哪个层以及它属于哪个位置?我如何使用这些信息和 aprototxt
来重建caffemodel
python.Thanks
machine-learning - 如何在 Caffe 中检索图层
给定一个caffe.Net
对象,访问特定层的最佳方式是什么?
现在我只知道如何迭代它们,这不是很有用:
neural-network - 使用 Caffe 进行分类时如何使用更通用的标签
我在 Caffe 中使用预训练的 AlexNet 进行分类。但是,分类的输出大约是'synset_words.txt'
文件中的 1000 个类。有没有办法使用更通用的类?
例如,我不希望输出图片中的狗类型,而是希望输出为“狗”。
我知道类中有一个层次结构,但是有没有办法检索该层次结构并使用它来获取更多通用标签?
谢谢 :)
python - 通过自制程序建立提升挂起
我正在尝试让 Caffe 在 OS X 10.11 上运行,但在通过自制软件从源代码构建构建提升时遇到了问题,正如指南所建议的那样。我使用命令行工具、自制软件(通过自制软件安装 python 和 python3)以及安装指南中列出的所有依赖项(已成功构建 protobuf)重新安装了 OS X。我正在使用 MKL 和 CUDA 7.5。运行命令后
安装脚本运行,显示配置,并说“...更新 13743 个目标...”然后复制一堆文件并说“...更新 13743 个目标...”
然后挂起。现在已经过去了大约两个小时,Activity Monitor 显示一个 ruby 进程来来去去,占用了大约 85% 的 CPU,其中大约 10% 的 CPU 被用户使用。没有 gcc 进程。我在这里上传了完整的日志。我只是不耐烦吗?全新 OS X 安装给出了相同的结果。
python - Caffe特征提取太慢?caffe.Classifier 或 caffe.Net
我已经用图像训练了一个模型。现在想将fc-6
特征提取到.npy
文件中。我caffe.set_mode_gpu()
用来运行 caffe.Classifier
和提取特征。
而不是每帧提取和保存特征。我将文件夹的所有功能保存到临时变量中,并将完整视频的结果保存到 npy 文件中(减少对磁盘的写入操作次数)。
我还听说我可以使用 Caffe.Net,然后传递一批图像。但我不确定必须做哪些预处理,如果这更快?
输出
每张图像所需的时间现在大约 0.9 秒 -
python - caffe python手册sgd
我正在尝试实现 SGD 功能以在 caffe python 中手动更新 python 中的权重,而不是使用solver.step()
函数。solver.step()
目标是通过手动更新权重来匹配完成后的权重更新。
设置如下: 使用 MNIST 数据。将solver.prototxt中的随机种子设置为random_seed: 52
:确保momentum: 0.0
和base_lr: 0.01
,,lr_policy: "fixed"
。上面已经完成,我可以简单地实现 SGD 更新方程(没有动量、正则化等)。公式很简单:W_t+1 = W_t - mu * W_t_diff
以下是两个测试:
Test1: 使用caffe的forward()和backward()计算前向传播和后向传播。对于包含权重的每一层,我都会这样做:
接下来,将权重/偏差更新为:
我运行了 5 次迭代。
Test2:运行 caffe 的solver.step(5)
.
现在,我期望这两个测试在两次迭代后应该产生完全相同的权重。
我在上述每个测试之后保存权重值,并通过两个测试计算权重向量之间的范数差,我发现它们并不精确。有人能发现我可能遗漏的东西吗?
以下是完整的代码供参考:
将权重与两个测试进行比较的最后一行产生:
after iter 5 : weight diff: 0.000203027766144 and bias diff: 1.78390789051e-05
正如我所期望的那样,这个差异是 0.0
有任何想法吗?
python - 使用预训练 VGG-16 模型的 Caffe 形状不匹配错误
我正在使用 PyCaffe 来实现一个受 VGG 16 层网络启发的神经网络。我想使用他们的GitHub 页面上提供的预训练模型。通常,这通过匹配层名称来工作。
对于我的"fc6"
层,我的 train.prototxt 文件中有以下定义:
这是 VGG-16 部署架构的 prototxt 文件。请注意,"fc6"
他们的 prototxt 中的 与我的相同(除了学习率,但这无关紧要)。还值得注意的是,在我的模型中,输入的大小也都相同:3 通道 224x224px 图像。
我一直在密切关注本教程,给我带来问题的代码块如下:
第一行加载我的求解器 prototxt,然后第二行从预训练模型 ( VGG_ILSVRC_16_layers.caffemodel
) 中复制权重。当求解器运行时,我收到此错误:
它的要点是他们的模型期望层的大小为 1x1x4096,而我的只有 4096。但我不明白如何改变这个?
我在用户谷歌组中找到了这个答案,指示我在复制之前进行网络手术以重塑预训练模型,但为了做到这一点,我需要lmdb
原始架构数据层中的文件,而我没有(它当我尝试运行网络手术脚本时抛出错误)。
caffe - caffe.io.Transformer 用于 LeNet 分类
我正在尝试使用 LeNet 对数字(0-9)进行分类。
我读取尺寸为 28x28 的图像,转置它们,然后将一个颜色通道发送到网络中。
并得到毫无意义的预测。我看到 PyCaffe 有一个可以完成这项工作的 Transformer,但我不知道如何将它用于 LeNet。
我正在使用来自 caffe/examples/mnist 的网络(希望这能回答网络期望的数据类型)。
唯一不同的是现在的输入是:
deep-learning - 在 prototxt 中使用批量大小 1 与在 pycaffe 中将批量大小强制为 1 时的结果差异
我正在运行MNIST示例,并对图层进行了一些手动更改。虽然训练一切都很好,我的最终测试准确率达到了 ~99%。我现在正在尝试使用 pycaffe 在 python 中使用生成的模型,并按照此处给出的步骤进行操作。我想计算混淆矩阵,所以我从 LMDB 中一张一张地循环测试图像,然后运行网络。这是代码:
这是我的网络定义prototxt
请注意,测试批量大小为 100,这就是为什么我需要在 python 代码中进行重塑。现在,假设我将测试批次大小更改为 1,完全相同的 python 代码会打印不同的(并且大部分是正确的)预测类标签。因此,批处理大小为 1 的代码会产生预期的结果,准确率约为 99%,而批处理大小为 100 则很糟糕。但是,基于 Imagenet pycaffe 教程,我看不出我做错了什么。作为最后的手段,我可以创建一个批量大小为 1 的 prototxt 副本进行测试,并在我的 python 代码中使用它,并在训练时使用原始的,但这并不理想。
另外,我认为这不应该是预处理的问题,因为它没有解释为什么它适用于批量大小 1。
任何指针表示赞赏!
python - 使用 python 将标签作为 LMDB 数据中的矩阵
我想在 python 中创建一个 lmdb 数据,其中标签不是标量,但每个标签都是 (1,K) 向量,K 是类数。更具体地说,标签向量除对应的类索引为 1 外,处处为零。
我在python中测试了以下代码:
但是我得到了这个错误,如上所述,numpy (1,k) 向量TypeError: only length-1 arrays can be converted to Python scalars
在哪里。y[i]
我也想知道 caffe 是否会接受这种格式的标签。
任何帮助将不胜感激