gpt4 book ai didi

python - 尽管设置了 CPU_Only,但仍使用 GPU,产生意外的关键字参数

转载 作者:太空狗 更新时间:2023-10-29 19:36:39 25 4
gpt4 key购买 nike

我正在使用 https://github.com/BVLC/caffe/wiki/Ubuntu-14.04-VirtualBox-VM 在安装了 CUDA(没有驱动程序)的 Ubuntu 14.04 虚拟服务器上安装 Caffe作为灵感。在安装过程中,我编辑了 MakeFile 以包含 "CPU_ONLY := 1",然后再构建它。但是,Caffe 似乎仍在尝试利用 GPU。当我尝试运行测试示例时,出现以下错误:

python python/classify.py examples/images/cat.jpg foo
Traceback (most recent call last):
File "python/classify.py", line 130, in <module>
main(sys.argv)
File "python/classify.py", line 103, in main
channel_swap=channel_swap)
TypeError: __init__() got an unexpected keyword argument 'gpu'

如何解决这个问题并完全在 CPU 上运行?

最佳答案

我要在 Mailerdaimon 的回答中添加几句话。

我按照安装指南 ( https://github.com/BVLC/caffe/wiki/Ubuntu-14.04-VirtualBox-VM ) 在我的 vagrant 虚拟机中安装了 Caffe。仅供引用,虚拟机不支持 GPU 加速。回到正题,在我修复示例脚本中的“CPU/GPU 开关”(https://github.com/BVLC/caffe/pull/2058)并将“--print_results --labels_file”选项(https://github.com/jetpacapp/caffe/blob/master/python/classify.py)添加到“python/classify.py”之后,此命令“./python/classify.py ./examples/images/cat.jpg foo --print_results' 仍然抛出以下错误:

  Traceback (most recent call last):
File "./python/classify.py", line 175, in <module>
main(sys.argv)
File "./python/classify.py", line 129, in main
channel_swap=channel_swap)
File "/home/vagrant/caffe/python/caffe/classifier.py", line 38, in __init__
self.transformer.set_mean(in_, mean)
File "/home/vagrant/caffe/python/caffe/io.py", line 267, in set_mean
raise ValueError('Mean shape incompatible with input shape.')
ValueError: Mean shape incompatible with input shape.

然后我转储“均值”(3*256*256)和“输入”(3*227*227)的形状。显然这两种形状是不相容的。但是旧版本的“set_mean()”不会抛出错误,所以我深入研究了 python 代码,发现旧的“set_mean()”函数看起来像这样(python/caffe/pycaffe.py,第 195-202 行, https://github.com/jetpacapp/caffe/ ):

if mode == 'elementwise':
if mean.shape != in_shape[1:]:
# Resize mean (which requires H x W x K input in range [0,1]).
m_min, m_max = mean.min(), mean.max()
normal_mean = (mean - m_min) / (m_max - m_min)
mean = caffe.io.resize_image(normal_mean.transpose((1,2,0)),
in_shape[2:]).transpose((2,0,1)) * (m_max - m_min) + m_min

但是在最新的 Caffe 中,贡献者将'set_mean()'和其他转换函数封装到类中'变压器'。新的“set_mean()”函数如下所示(python/caffe/io.py,第 253-254 行,https://github.com/BVLC/caffe/):

if ms != self.inputs[in_][1:]:
raise ValueError('Mean shape incompatible with input shape.')

老天,这两个怎么可能是同一个函数呢?因此,我更改了新的“set_mean()”,注释掉引发错误的句子,并像在旧的“set_mean()”中一样添加了形状调整程序。

if ms != ins:
print(self.inputs[in_])
in_shape = self.inputs[in_][1:]
m_min, m_max = mean.min(), mean.max()
normal_mean = (mean - m_min) / (m_max - m_min)
mean = resize_image(normal_mean.transpose((1,2,0)),
in_shape[1:]).transpose((2,0,1)) * \
(m_max - m_min) + m_min
'''
raise ValueError('Mean shape incompatible with input shape.')
'''

瞧,问题解决了。

Classifying 1 inputs.
Done in 1.17 s.
[('tabby', '0.27933'), ('tiger cat', '0.21915'), ('Egyptian cat', '0.16064'), ('lynx', '0.12844'), ('kit fox', '0.05155')]

关于python - 尽管设置了 CPU_Only,但仍使用 GPU,产生意外的关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28692209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com