使用批处理规范化层创建顺序模型将冻结程序

时间:2019-01-04 07:09:36

标签: python tensorflow keras gpu

我试图弄清楚如何用Keras创建模型。为了帮助我,我在组装模型时利用plot_model来可视化模型。该程序只是组装一个顺序模型并使用plot_model导出它。

一切正常,直到我尝试向模型中添加批归一化(BN)层。

程序突然尝试添加GPU设备并冻结。我被迫通过任务管理器关闭程序

我正在Windows 10中运行它。Python 3.6版。 Tensorflow-gpu版本1.12.0。 Keras版本2.2.4

我认为我是从错误的库中导入的,所以我尝试直接引用它。它没有改变任何东西。我尝试过咨询BN层的不同实现,并且它们似乎都以与我毫无问题的相同方式实现了它们。

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, BatchNormalization, LeakyReLU, Activation
import keras

import os


encoder = Sequential()
encoder.add(Conv2D(64, (7,7),strides=(2,2), input_shape=(256, 256,3)))
encoder.add(keras.layers.BatchNormalization())
encoder.add(LeakyReLU())
encoder.add(Conv2D(64, 3, strides=3, padding='same'))


from keras.utils import plot_model
plot_model(encoder, to_file='model.png', show_shapes=True)

print ('done')

当我运行程序时,它挂在以下输出:I:tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0上,从不输出“完成”消息。 plot_model图像也不会导出。

上面的消息也很不寻常,因为在将其他任何一层添加到编码器时都不会出现。

1 个答案:

答案 0 :(得分:1)

尝试将TensorFlow降级到1.9版本。

如果这不起作用,请卸载Keras(及其应用程序和预处理)。

然后,在您的代码中,将所有导入从 keras.models 修改为 tensorflow.keras.models ;换句话说,您所做的每个导入都通过 tensorflow 完成。