【问题标题】:tensorflow keras do not use all available resourcestensorflow keras 不使用所有可用资源
【发布时间】:2018-03-28 00:23:25
【问题描述】:

我是深度学习的新手,为了提高知识,我一直在阅读一些书籍并在线观看视频课程。 在这个视频课程中,我必须使用卷积神经网络做一个练习。 我已经构建了一个包含 10.000 个尺寸为 64x64 像素的图像的 CNN。 (识别猫狗图像)

from keras.models import Sequential
from  keras.layers import Convolution2D
from  keras.layers import MaxPooling2D
from  keras.layers import Flatten
from  keras.layers import Dense

# Initialising the CNN

classifier = Sequential()

# Step 1 - Convolution
classifier.add(Convolution2D(32,3,3,input_shape=(64,64,3),activation='relu'))

# Step 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2,2)))


classifier.add(Convolution2D(32,3,3,activation='relu'))
classifier.add(MaxPooling2D(pool_size = (2,2)))

# Step 3 - Flattening
classifier.add(Flatten())

#step 4 - Full Connection CNN
classifier.add(Dense(output_dim = 128 ,activation='relu'))
classifier.add(Dense(output_dim = 1 ,activation='sigmoid'))

# Compiling the CNN

classifier.compile(optimizer = 'adam' , loss = 'binary_crossentropy', metrics = ['accuracy'])

# Fitting the CNN to the images
from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

traininig_set = train_datagen.flow_from_directory(
        'dataset/training_set',
        target_size=(64, 64),
        batch_size=32,
        class_mode='binary')

test_set = test_datagen.flow_from_directory(
        'dataset/test_set',
        target_size=(64, 64),
        batch_size=32,

        class_mode='binary')

classifier.fit_generator(traininig_set,
        steps_per_epoch=8000,
        epochs=25,
        validation_data=test_set,
        validation_steps=2000)

我第一次安装 Anaconda 时没有安装 GPU 模块,当我开始安装我的 CNN 时 在 CPU 工作在 70% 的情况下,我必须在每个 epoch 等待 1190 秒。 供您参考,我的计算机速度非常快。这是一个超频至 4.2ghz 的 i7 6800k 微星 GTX1080 显卡和 32gb 3333Mhz。 我坚持认为在这台计算机上安装 tensorflow gpu 模块几乎是强制性的。

我看了一些posts 如何检查 tensorflow 是否正确配置为使用 GPU 并启动:

In [1]: from tensorflow.python.client import device_lib
In [2]: print(device_lib.list_local_devices())

我有这个结果:

2017-10-16 10:41:25.780983: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-10-16 10:41:25.781067: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-16 10:41:26.635590: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:955] Found device 0 with properties:
name: GeForce GTX 1080
major: 6 minor: 1 memoryClockRate (GHz) 1.8225
pciBusID 0000:03:00.0
Total memory: 8.00GiB
Free memory: 6.61GiB
2017-10-16 10:41:26.635807: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:976] DMA: 0
2017-10-16 10:41:26.636324: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:986] 0:   Y
2017-10-16 10:41:26.637179: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:03:00.0)
[name: "/cpu:0"
device_type: "CPU"
memory_limit: 268435456

locality {
}
incarnation: 16495731140373557390
, name: "/gpu:0"
device_type: "GPU"
memory_limit: 6740156088

locality {
  bus_id: 1
}
incarnation: 6266244792178813148
physical_device_desc: "device: 0, name: GeForce GTX 1080, pci bus id: 0000:03:00.0"
]

对于 gpu:0,我在文档中读到 TensorFlow 会自动使用 GPU 进行计算。

使用这种配置启动 fit 方法,我必须每个 epoch 等待 950 秒,比 1190 秒要好得多。 cpu 永远不会超过 10%,奇怪的是,GPU 永远不会超过 10-13%。 我认为我的配置有问题,因为课程中的老师使用没有 tensorflow GPU 模块的 MacBook 笔记本(实际上我不知道确切的配置)每个 epoch 大约需要 90 秒。

我不是 python 或 tensorflow 专家,但似乎确实有什么问题或其他需要理解的地方。

有人可以提供一些建议、阅读内容、进行一些测试以更好地了解瓶颈在哪里吗? 谢谢

【问题讨论】:

  • 在您的软件包列表 (pip list) 中,您得到的是 tensorflowtensorflow-gpu,还是两者都有?
  • 这里是命令结果 tensorflow (1.3.0) tensorflow-gpu (1.3.0) tensorflow-tensorboard (0.1.6) 谢谢

标签: python tensorflow keras


【解决方案1】:

我在 Windows 上没有 GPU,但我在安装带有 Anaconda 的 Intel 发行版 Python 时得到了一笔非常好的交易:https://software.intel.com/en-us/articles/using-intel-distribution-for-python-with-anaconda

对于tensorflow,最好的似乎是python 3.5的环境(在之前的链接中,使用python=3.5

然后我在这个由 anaconda 制作的环境中安装了带有 pip 的 tensorflow。关注installing with anaconda

然后是 conda install keras 的 Keras。 (但要确保它不会替换以前的 numpy 和其他安装,找到正确的安装命令不要替换这些优化包)。如果 conda 版本不起作用,也许pip install keras 可能会更好。 (同样,使用正确的选项不要替换您现有的包) - 不要让这个 keras 安装替换您的 numpy 包或 tensorflow 包!

这给了我绝对 100% 的所有处理器(根据 windows 资源监视器)

如果这不能解决您的问题,您还可以尝试从here 获取 numpy 和 scipy 包。不幸的是,我使用这个来源的 keras 和 tensorflow 包完全没有成功,但是 numpy 是高质量的东西。


使用 GPU,您的问题可能是缺少合适的 CUDA 驱动程序和 CUDNN 库? 关注thisthis

不幸的是,这些东西因计算机而异。对于 linux 机器,我严格按照这些站点和 tensorflow 站点中的说明进行操作,结果令人惊讶。

【讨论】:

  • 感谢您的回复。我已经按照您的链接遵循了您的建议,我已经更新了 cuda e cudnn,但不幸的是,在安装 cnn 时没有任何类型的消息,并且 GPU 保持在 9-10%
  • 更新 CUDA 和 CUDNN 后,您是否“重新安装”了所有软件包?
  • 我用最新版本的 tensorflow-gpu (1.3.0) 和 keras Keras (2.0.8) 创建了一个全新的环境,但不幸的是 GPU 没有再次超过 10%
  • 嗯....您是否执行了 CUDA 的验证安装 (docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#verify-installation) 步骤?如果通过,请检查您是否有这些环境变量:CUDA_PATH(按照安装指南的要求)、CUDA_HOMECUDA_ROOT(谁知道 tensorflow 是否不寻找不同的变量?我已经在我的linux安装,只是为了确定)。
  • 确保您安装的 CUDA 版本是 8.0 并且 cuDNN 是 6.0。并检查 cuDNN 的所有环境变量是否与以下链接中的完全相同。以防万一,我还会创建LD_LIBRARY_PATH,尽管那是为Linux 安装而设计的。 developer2.download.nvidia.com/compute/machine-learning/cudnn/…
【解决方案2】:

在 Daniel 的回答之上(检查 CUDA 和 cuDNN)- 从不 并排安装 tensorflowtensorflow-gpu 软件包是一个好主意;最有可能的是,您使用的是tensorflow(即CPU)。

为避免这种情况,您应该卸载这两个软件包,然后重新安装tensorflow-gpu,即:

pip uninstall tensorflow tensorflow-gpu
pip install tensorflow-gpu

另请参阅已接受的答案(和评论)here,关于类似问题。

【讨论】:

  • 我已经卸载了 tensorflow,现在只有 tensorflow-gpu,但不幸的是 GPU 保持在 9%。
  • 我会删除 tensoflow-gpu 和 keras,以防万一。并再次安装它们。仔细检查 keras 是否没有尝试安装第二个 tensorflow。
  • @DanielMöller Keras 过去需要 tensorflow(即 CPU 版本),但现在似乎不再需要 github.com/fchollet/keras/blob/master/setup.py
  • 不久前我遇到了这个问题。我安装了 tensorflow-gpu,但是当我尝试安装 keras 时,它会自动尝试安装 tensorflow。我不记得是conda install keras 还是pip install keras,但他们肯定有不同的行为。最终还是和不想安装tensorflow的那个留了下来。
  • @DanielMöller 是的,我也是(与pip 一起使用)!但似乎他们已经删除了最新版本中的显式依赖
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 2018-08-16
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多