Python Keras BatchNormalization未初始化值

Python Keras BatchNormalization未初始化值,python,tensorflow,keras,Python,Tensorflow,Keras,我正在尝试向Keras中的vgg样式模型添加批处理规范。当我添加批次规范层时,我得到错误: FailedPreconditionError: Attempting to use uninitialized value batchnormalization_1_running_mean/biased 如果没有批处理层,脚本运行时不会出错,只有在添加批处理规范化层时才会抛出错误 model = Sequential() model.add(ZeroPadding2D((1, 1), input_

我正在尝试向Keras中的vgg样式模型添加批处理规范。当我添加批次规范层时,我得到错误:

FailedPreconditionError: Attempting to use uninitialized value batchnormalization_1_running_mean/biased 
如果没有批处理层,脚本运行时不会出错,只有在添加批处理规范化层时才会抛出错误

model = Sequential()
model.add(ZeroPadding2D((1, 1), input_shape=(1, conf['image_shape'][0], conf['image_shape'][1]), dim_ordering=conf['dim_ordering']))
model.add(Convolution2D(conf['level_1_filters'], 3, 3, dim_ordering=conf['dim_ordering']))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(ZeroPadding2D((1, 1), dim_ordering=conf['dim_ordering']))
model.add(Convolution2D(conf['level_1_filters'], 3, 3, dim_ordering=conf['dim_ordering']))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), dim_ordering=conf['dim_ordering']))

model.add(ZeroPadding2D((1, 1), dim_ordering=conf['dim_ordering']))
model.add(Convolution2D(conf['level_2_filters'], 3, 3, dim_ordering=conf['dim_ordering']))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(ZeroPadding2D((1, 1), dim_ordering=conf['dim_ordering']))
model.add(Convolution2D(conf['level_2_filters'], 3, 3, dim_ordering=conf['dim_ordering']))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), dim_ordering=conf['dim_ordering']))

model.add(Flatten())
model.add(Dense(conf['dense_layer_size']))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(conf['dropout_value']))
model.add(Dense(conf['dense_layer_size']))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(conf['dropout_value']))

model.add(Dense(2, activation='softmax'))

# sgd = SGD(lr=conf['learning_rate'], decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
这是在Keras中使用批处理规范的正确语法吗?我在这篇文章中遵循了这个例子

使用TensorFlow后端。
I tensorflow/stream_executor/dso_loader.cc:128]已在本地成功打开CUDA库libcublas.so
I tensorflow/stream_executor/dso_loader.cc:128]已在本地成功打开CUDA库libcudnn.so
I tensorflow/stream_executor/dso_loader.cc:128]已在本地成功打开CUDA库libcuft.so
I tensorflow/stream_executor/dso_loader.cc:128]在本地成功打开了CUDA库libcuda.so.1
I tensorflow/stream_executor/dso_loader.cc:128]已在本地成功打开CUDA库libcurand.so
训练病人:699
有效病人:698
创建和编译模型。。。
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885]找到了具有以下属性的设备0:
名称:GeForce GTX 1080
大调:6小调:1记忆时钟频率(GHz)1.7335
pciBusID 0000:03:00.0
总内存:7.92GiB
可用内存:7.07GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906]DMA:0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916]0:Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975]创建tensorflow设备(/gpu:0)->(设备:0,名称:GeForce GTX 1080,pci总线id:0000:03:00.0)
列车文件数:123111
有效文件数:125469
拟合模型。。。
样品序列:5000,样品有效期:5000
纪元1/40
W tensorflow/core/framework/op_kernel.cc:975]失败的前提条件:尝试使用未初始化的值batchnormalization_1_running_mean/biased
[[Node:batchnormalization_1_running_mean/biased/read=Identity[T=DT_FLOAT,[u class=[“loc:@batchnormalization_1_running_mean”],[u device=“/job:localhost/replica:0/task:0/gpu:0]”(batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975]失败的前提条件:尝试使用未初始化的值batchnormalization_1_running_mean/biased
[[Node:batchnormalization_1_running_mean/biased/read=Identity[T=DT_FLOAT,[u class=[“loc:@batchnormalization_1_running_mean”],[u device=“/job:localhost/replica:0/task:0/gpu:0]”(batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975]失败的前提条件:尝试使用未初始化的值batchnormalization_1_running_mean/biased
[[Node:batchnormalization_1_running_mean/biased/read=Identity[T=DT_FLOAT,[u class=[“loc:@batchnormalization_1_running_mean”],[u device=“/job:localhost/replica:0/task:0/gpu:0]”(batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975]失败的前提条件:尝试使用未初始化的值batchnormalization_1_running_mean/biased
[[Node:batchnormalization_1_running_mean/biased/read=Identity[T=DT_FLOAT,[u class=[“loc:@batchnormalization_1_running_mean”],[u device=“/job:localhost/replica:0/task:0/gpu:0]”(batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975]失败的前提条件:尝试使用未初始化的值batchnormalization_1_running_mean/biased
[[Node:batchnormalization_1_running_mean/biased/read=Identity[T=DT_FLOAT,[u class=[“loc:@batchnormalization_1_running_mean”],[u device=“/job:localhost/replica:0/task:0/gpu:0]”(batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975]失败的前提条件:尝试使用未初始化的值batchnormalization_1_running_mean/biased
[[Node:batchnormalization_1_running_mean/biased/read=Identity[T=DT_FLOAT,[u class=[“loc:@batchnormalization_1_running_mean”],[u device=“/job:localhost/replica:0/task:0/gpu:0]”(batchnormalization_1_running_mean/biased)]]
回溯(最近一次呼叫最后一次):
文件“keras-v2.py”,第197行,在
模型=创建单个模型()
文件“keras-v2.py”,第173行,在创建单个模型中
回调=回调)
文件“/usr/local/lib/python2.7/dist packages/keras/models.py”,第882行,在fit_生成器中
pickle\u safe=pickle\u safe)
文件“/usr/local/lib/python2.7/dist-packages/keras/engine/training.py”,第1461行,在fit_生成器中
等级重量=等级重量)
文件“/usr/local/lib/python2.7/dist-packages/keras/engine/training.py”,第1239行,在批量生产中
输出=自列车功能(ins)
文件“/usr/local/lib/python2.7/dist packages/keras/backend/tensorflow\u backend.py”,第1040行,在调用中__
updated=session.run(self.outputs+[self.updates\u op],feed\u dict=feed\u dict)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/python/client/session.py”,第766行,正在运行
运行_元数据_ptr)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/python/client/session.py”,第964行,正在运行
提要(dict字符串、选项、运行元数据)
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py”,第1014行,运行
目标\u列表、选项、运行\u元数据)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/python/client/session.py”,第1034行,在
提升类型(e)(节点定义、操作、消息)
tensorflow.python.framework.errors\u impl.failedPremissionError:尝试使用未初始化的值batchnormalization\u 1\u running\u mean/biased
[[Node:batchnormalization_1_running_mean/biased/read=Identity[T=DT_FLOAT,[u class=[“loc:@batchnormalization_1_running_mean”],[u device=“/job:localhost/replica:0/task:0/gpu:0]”(batchnormalization_1_running_mean/biased)]]
[[Node:Mean_3/_49=_Recv[client_terminated=false,Recv_device=“/job:localhost/replica:0/task:0/cpu:0”,send_device=“/job:localhost/replica:0/task:0/gpu:0”,send_device_化身=1,tensor_name=“edge_2152_Mean_3”,tensor_type=DT_FLOAT,_device=“/job:localhost/replica:0/task:0/cpu:0”()]
由op u'batchnormalization_1_running_mean/Biasted/read'引起,定义为:
文件“keras-v2.py”,第197行,在
模型=创建
Using TensorFlow backend.
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
Train patients: 699
Valid patients: 698
Create and compile model...
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: 
name: GeForce GTX 1080
major: 6 minor: 1 memoryClockRate (GHz) 1.7335
pciBusID 0000:03:00.0
Total memory: 7.92GiB
Free memory: 7.07GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:03:00.0)
Number of train files: 123111
Number of valid files: 125469
Fit model...
Samples train: 5000, Samples valid: 5000
Epoch 1/40
W tensorflow/core/framework/op_kernel.cc:975] Failed precondition: Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975] Failed precondition: Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975] Failed precondition: Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975] Failed precondition: Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975] Failed precondition: Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
W tensorflow/core/framework/op_kernel.cc:975] Failed precondition: Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
Traceback (most recent call last):
  File "keras-v2.py", line 197, in <module>
    model = create_single_model()
  File "keras-v2.py", line 173, in create_single_model
    callbacks=callbacks)
  File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 882, in fit_generator
    pickle_safe=pickle_safe)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1461, in fit_generator
    class_weight=class_weight)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1239, in train_on_batch
    outputs = self.train_function(ins)
  File "/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py", line 1040, in __call__
    updated = session.run(self.outputs + [self.updates_op], feed_dict=feed_dict)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 766, in run
    run_metadata_ptr)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 964, in _run
    feed_dict_string, options, run_metadata)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1014, in _do_run
    target_list, options, run_metadata)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1034, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
     [[Node: Mean_3/_49 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_2152_Mean_3", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

Caused by op u'batchnormalization_1_running_mean/biased/read', defined at:
  File "keras-v2.py", line 197, in <module>
    model = create_single_model()
  File "keras-v2.py", line 145, in create_single_model
    model = get_custom_CNN()
  File "keras-v2.py", line 111, in get_custom_CNN
    model.add(BatchNormalization(axis=-1))
  File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 312, in add
    output_tensor = layer(self.outputs[0])
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 514, in __call__
    self.add_inbound_node(inbound_layers, node_indices, tensor_indices)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 572, in add_inbound_node
    Node.create_node(self, inbound_layers, node_indices, tensor_indices)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 149, in create_node
    output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))
  File "/usr/local/lib/python2.7/dist-packages/keras/layers/normalization.py", line 140, in call
    self.updates = [K.moving_average_update(self.running_mean, mean, self.momentum),
  File "/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py", line 329, in moving_average_update
    variable, value, momentum)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/moving_averages.py", line 70, in assign_moving_average
    update_delta = _zero_debias(variable, value, decay)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/moving_averages.py", line 177, in _zero_debias
    trainable=False)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 1024, in get_variable
    custom_getter=custom_getter)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 850, in get_variable
    custom_getter=custom_getter)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 346, in get_variable
    validate_shape=validate_shape)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 331, in _true_getter
    caching_device=caching_device, validate_shape=validate_shape)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 677, in _get_single_variable
    expected_shape=shape)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variables.py", line 224, in __init__
    expected_shape=expected_shape)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variables.py", line 370, in _init_from_args
    self._snapshot = array_ops.identity(self._variable, name="read")
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 1424, in identity
    result = _op_def_lib.apply_op("Identity", input=input, name=name)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op
    op_def=op_def)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2240, in create_op
    original_op=self._default_original_op, op_def=op_def)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1128, in __init__
    self._traceback = _extract_stack()

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value batchnormalization_1_running_mean/biased
     [[Node: batchnormalization_1_running_mean/biased/read = Identity[T=DT_FLOAT, _class=["loc:@batchnormalization_1_running_mean"], _device="/job:localhost/replica:0/task:0/gpu:0"](batchnormalization_1_running_mean/biased)]]
     [[Node: Mean_3/_49 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_2152_Mean_3", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 433, in data_generator_task
    generator_output = next(generator)
  File "keras-v2.py", line 71, in batch_generator_train
    image = load_and_normalize_dicom(f, conf['image_shape'][0], conf['image_shape'][1])
  File "keras-v2.py", line 58, in load_and_normalize_dicom
    dicom_img = cv2.resize(dicom_img, (x, y), interpolation=cv2.INTER_CUBIC)
AttributeError: 'NoneType' object has no attribute 'resize'