Python Keras BatchNormalization未初始化值
我正在尝试向Keras中的vgg样式模型添加批处理规范。当我添加批次规范层时,我得到错误: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_
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'