每当训练模型时,内核都会重新启动

新手上路,请多包涵

这是代码:

 # import libraries
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense

# import dataset
from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator()

test_datagen = ImageDataGenerator()

training_set = train_datagen.flow_from_directory(
                                            'data/spectrogramme/ensemble_de_formation',
                                            target_size = (64, 64),
                                            batch_size = 128,
                                            class_mode = 'binary')

test_set = test_datagen.flow_from_directory('data/spectrogramme/ensemble_de_test',
                                            target_size = (64, 64),
                                            batch_size = 128,
                                            class_mode = 'binary')

# initializing
reseau = Sequential()

# 1. convolution
reseau.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
reseau.add(MaxPooling2D(pool_size = (2, 2)))
reseau.add(Conv2D(32, (3, 3), activation = 'relu'))
reseau.add(MaxPooling2D(pool_size = (2, 2)))
reseau.add(Conv2D(64, (3, 3), activation = 'relu'))
reseau.add(MaxPooling2D(pool_size = (2, 2)))
reseau.add(Conv2D(64, (3, 3), activation = 'relu'))
reseau.add(MaxPooling2D(pool_size = (2, 2)))

# 2. flatenning
reseau.add(Flatten())

# 3. fully connected
from keras.layers import Dropout
reseau.add(Dense(units = 64, activation = 'relu'))
reseau.add(Dropout(0.1))
reseau.add(Dense(units = 128, activation = 'relu'))
reseau.add(Dropout(0.05))
reseau.add(Dense(units = 256, activation = 'relu'))
reseau.add(Dropout(0.03))
reseau.add(Dense(units = 1, activation = 'sigmoid'))

# 4. compile
reseau.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

# 5. fit
reseau.fit_generator(training_set, steps_per_epoch = 8000, epochs = 1,
                     validation_data = test_set, validation_steps = 2000)

这应该证明我有安装了 CUDA 和 CUDNN 的 tensorflow GPU 图片

我不知道该怎么办,我已经多次重装 CUDA 和 CUDNN

但是,如果我卸载 tensorflow-gpu,程序运行完美……除了每个纪元需要 5000 秒……我想避免这种情况

仅供参考,这一切都发生在 Windows 上

任何帮助表示赞赏。

原文由 user7804325 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 803
1 个回答

tensorflow-gpu 的一个非常麻烦的问题。我花了好几天才找到最好的解决方案。

似乎是什么问题:

我知道您可能在观看了 youtube 视频或互联网文档后安装了 cudnn 和 cuda(就像我一样)。但是由于 cuda 和 cudnn 对版本冲突非常严格,因此您的 tensorflow 、 cuda 或 cudnn 版本之间可能存在版本不匹配。

解决方法是什么:

tensorflow 在安装 tensorflow-gpu 2.3 期间由 Anaconda 在 Windows 10 上自动选择的构建似乎有问题。请 在此处 找到解决方法(如果您有 GitHub 帐户,请考虑对 GitHub 答案进行投票)。

Python 3.7: conda install tensorflow-gpu=2.3 tensorflow=2.3=mkl_py37h936c3e2_0

Python 3.8: conda install tensorflow-gpu=2.3 tensorflow=2.3=mkl_py38h1fcfbd6_0

这些片段会自动下载 cuda 和 cudnn 驱动程序以及 tensorflow-gpu。在尝试了这个解决方案之后,我能够 fit() tensorflow 模型以及由于安装了 GPU 而提高了速度。

忠告:

如果您从事机器学习/数据科学工作。我强烈建议您改用 anaconda 而不是 pip。这将允许您创建虚拟环境并与 jupyter-notebooks 轻松集成。您可以为机器学习任务创建一个单独的虚拟环境,因为它们通常需要升级或降级库。对于虚拟环境,它不会伤害环境之外的其他包。

原文由 Hissaan Ali 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题