小编wou*_*els的帖子

Keras / Tensorflow-限制内核数(intra_op_parallelism_threads不起作用)

我一直在尝试在CPU群集上运行keras,为此,我需要限制使用的内核数量(这是一个共享系统)。因此,为了限制内核数量,我着眼于这个答案。但是,这根本行不通。我尝试使用以下基本代码运行:

from keras.applications.vgg16 import VGG16
from keras import backend as K
import numpy as np

conf = K.tf.ConfigProto(device_count={'CPU': 1}, 
                        intra_op_parallelism_threads=2, 
                        inter_op_parallelism_threads=2)
K.set_session(K.tf.Session(config=conf))
model = VGG16(weights='imagenet', include_top=False)
x = np.random.randn(1000, 224, 224, 3)
features = model.predict(x)
Run Code Online (Sandbox Code Playgroud)

当我运行它并检查时htop,它将使用所有(128)逻辑核心。这是喀拉拉邦的错误吗?还是我做错了什么?

Keras说我的CPU支持SSE4.1和SSE4.2,因为我不是从二进制编译的,所以未使用它们。从二进制进行编译还会解决原始问题吗?

编辑:从UNIX计算机启动keras脚本时,我找到了一种解决方法:

taskset -c 0-23 python keras_script.py
Run Code Online (Sandbox Code Playgroud)

这将在计算机的前24个内核上运行脚本。它可以工作,但是如果可以从keras / tensorflow中获得它仍然会很好。

keras tensorflow

8
推荐指数
1
解决办法
1247
查看次数

Numpy:分配目的地是只读的 - 广播

我从一个 2D 数组开始,想将它广播到一个 3D 数组(例如,从灰度图像到 rgb 图像)。这是我使用的代码。

>>> img_grey = np.random.randn(4, 4)
>>> img_rgb = np.broadcast_to(np.expand_dims(img_grey, axis=-1), (4, 4, 3))
Run Code Online (Sandbox Code Playgroud)

这将创建一个img_rgb按预期工作的数组:3 个彩色通道(最后一个维度),每个切片都等于原始灰度图像。但是,如果我这样做

>>> img_rgb[0, 0, 0] = 0.
ValueError: assignment destination is read-only
Run Code Online (Sandbox Code Playgroud)

我无法更改 rgb 图像!

python numpy array-broadcasting

6
推荐指数
1
解决办法
1万
查看次数

如何导入本地版本的 python 包?

我想我在 matplotlib 中发现了一个错误。我使用 anaconda 作为包管理器,但必须从 github 下载 matplotlib 才能编辑它。

如何导入修改后的 matplotlib 版本以进行测试?我尝试使用

import /absolute/path/to/modified/matplotlib
Run Code Online (Sandbox Code Playgroud)

,但这没有用。理想情况下,我想创建一个使用修改后的 matplotlib 而不是原始版本的 conda 环境,这样我就可以轻松地在两者之间切换。

如何测试和运行开源库的修改版本,而不弄乱软件包的原始版本?有没有办法从绝对路径导入库?

python matplotlib anaconda

5
推荐指数
1
解决办法
2622
查看次数