【发布时间】: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) 中,您得到的是tensorflow、tensorflow-gpu,还是两者都有? -
这里是命令结果 tensorflow (1.3.0) tensorflow-gpu (1.3.0) tensorflow-tensorboard (0.1.6) 谢谢
标签: python tensorflow keras