阅读Caffe教程(http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb)时,我发现了以下声明:
net.blobs['data'].data[...] = transformer.preprocess('data',
caffe.io.load_image
(caffe_root + 'examples/images/cat.jpg'))
Run Code Online (Sandbox Code Playgroud)
它主要用于分配单个图像net.blobs['data'].data.
net.blobs['data'].data[...]是4D ndarray并transformer...返回3D ndarray,因此省略号用于在第0轴上复制3D数组.这让我觉得我应该能够重写代码以避免省略如下:
z3=transformer.preprocess('data',
caffe.io.load_image
(caffe_root + 'examples/images/cat.jpg'))
z4 = z3[np.newaxis,...]
net.blobs['data'].data = z4
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我明白了
>> net.blobs['data'].data = z4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't set attribute
Run Code Online (Sandbox Code Playgroud)
即使,
net.blobs['data'].data[...] = z3
Run Code Online (Sandbox Code Playgroud)
工作良好.这对任何人都有意义吗?
我已经验证了变量的形状和类型如下:
>>> print net.blobs['data'].data.shape, z3.shape, z4.shape
(1, 3, 227, 227) (3, 227, 227) (1, 3, 227, 227)
>>> print type(net.blobs['data'].data),type(z3),type(z4)
<type 'numpy.ndarray'> <type 'numpy.ndarray'> <type …Run Code Online (Sandbox Code Playgroud) 给定一个caffe.Net对象,访问特定层的最佳方法是什么?
现在,我只想出了如何遍历它们,这不是很有用:
for i in range(n_layers):
print net.layers[i].type
Run Code Online (Sandbox Code Playgroud) 我在试图找出如何安装caffe时失去了一天.最后,我构建了包括pycaffe在内的所有内容.但是当我现在在我的小测试pythons脚本中运行"import caffe"时,我收到以下错误
ImportError: /usr/progtools/anaconda2/bin/../lib/libgomp.so.1: version `GOMP_4.0' not found (required by /usr/lib/x86_64-linux-gnu/libsoxr.so.0)
Run Code Online (Sandbox Code Playgroud)
我发现这个github问题https://github.com/dmlc/mxnet/issues/1225 在底部有人说它是因为anaconda中的gcc版本是4.*而我用5.4编译了所有内容.我正在使用CUDA 8.0,因此它不应该与gcc 4.8.5(即cuda 7.5)有问题,因为支持5.*.
我已经使用Debug标志编译了caffe.现在我跑的时候
./examples/mnist/train_lenet.sh
Run Code Online (Sandbox Code Playgroud)
我得到输出
I0112 22:50:49.680357 114020 data_layer.cpp:103] Read time: 0.095 ms.
I0112 22:50:49.680376 114020 data_layer.cpp:104] Transform time: 0.821 ms.
I0112 22:50:49.681077 113921 solver.cpp:409] Test net output #0: accuracy = 0.9902
I0112 22:50:49.681115 113921 solver.cpp:409] Test net output #1: loss = 0.0292544 (* 1 = 0.0292544 loss)
I0112 22:50:49.681125 113921 solver.cpp:326] Optimization Done.
I0112 22:50:49.681133 113921 caffe.cpp:215] Optimization Done.
I0112 22:50:49.681915 114020 data_layer.cpp:102] Prefetch batch: 1 ms.
I0112 22:50:49.681929 114020 data_layer.cpp:103] Read time: 0.095 ms.
I0112 22:50:49.681948 114020 data_layer.cpp:104] Transform time: …Run Code Online (Sandbox Code Playgroud) 我正面临这个问题,请你给我一些提示如何解决这个问题:
$sudo cp ~/anaconda2/lib/libhdf5* /usr/lib/x86_64-linux-gnu/
cp: not writing through dangling symlink '/usr/lib/x86_64-linux-gnu/libhdf5.so'
cp: not writing through dangling symlink '/usr/lib/x86_64-linux-gnu/libhdf5_hl.so'
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试使用以下脚本安装 Caffe 框架:https://gist.github.com/jetsonhacks/acf63b993b44e1fb9528并且出现 opencv2/core/core.hpp 错误。
CXX src/caffe/layers/data_layer.cpp
src/caffe/layers/data_layer.cpp:2:33:
fatal error: opencv2/core/core.hpp: No such file or directory
#include <opencv2/core/core.hpp>
^
compilation terminated.
make: *** [.build_release/src/caffe/layers/data_layer.o] Error 1
Run Code Online (Sandbox Code Playgroud)
在文档中,OpenCV 是可选的。但那个错误告诉我不是。这include和OpenCV安装无关吗?
我的道歉自我的问题以来听起来很愚蠢。但是我在深度学习和咖啡方面还很陌生。我们如何才能检测到需要多少次迭代才能在我们自己的数据集上微调预训练?例如,我为5个类的数据运行fcn32。何时可以通过查看训练阶段的损失和准确性来停止微调过程?
非常感谢
当我尝试使用Caffe和Python(2.7和3.5)从经过预训练的VGG 16/19模型中获取输出时(2.7和3.5),在net.forward()步骤(在笔记本电脑的CPU上)上花费了15秒以上。
我想知道是否有人会建议我这样做,就像其他许多模型(例如ResNet,AlexNet)一样,我在一瞬间就得到了输出,这是迄今为止我发现的唯一一个表现不佳的模型。
我使用的代码如下:
img = cv2.imread(path + img_name + '.jpg')
img = transform_img(img,224,224) #Resizes image.
net = caffe.Net(model_prototxt,model_trained,caffe.TEST)
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1))
net.blobs['data'].data[...] = transformer.preprocess('data', img)
start = timer()
out = net.forward()
end = timer()
print('Runtime: ' + "{0:.2f}".format(end-start) + 's')
Run Code Online (Sandbox Code Playgroud)
抱歉,这可能是一个非常新手的问题,在此先感谢所有花时间回答的人。
我想在函数中发送两个参数并接收两个值
我想修改这段代码,以便我能够发送两个参数并接收两个参数
list_value = [ 1, 2,0,-1,-9,2,3,5,4,6,7,8,9,0,1,50]
hnd = map(lambda (valua): function_f(valua), list_value)
Run Code Online (Sandbox Code Playgroud)
function_f是一个返回一个数字1或0的函数.
上面的代码可以在发送一个参数时完成工作,但我想发送两个而不是.所需函数的第一个参数是list_value,第二个参数是模型"net model train it using caffe"
所以我想编写一个函数,它可以完成前一个函数的相同工作,但返回两个参数,一个是[0或1],另一个是修改后的函数修改过的模型.
caffe ×9
pycaffe ×9
python ×4
anaconda ×1
attributes ×1
gcc ×1
linux ×1
numpy ×1
nvidia ×1
ubuntu ×1
ubuntu-14.04 ×1
ubuntu-16.04 ×1
vgg-net ×1