Python 拟合神经网络时未绑定局部错误-TensorFlow错误?

Python 拟合神经网络时未绑定局部错误-TensorFlow错误?,python,tensorflow,keras,anaconda,Python,Tensorflow,Keras,Anaconda,考虑以下神经网络的“你好世界”: (X_train, y_train),(X_test, y_test) = keras.datasets.mnist.load_data() X_train, X_test = X_train / 255.0, X_test / 255.0 net = keras.models.Sequential([ keras.layers.Flatten(), keras.layers.Dense(512, activation=tf.nn.relu),

考虑以下神经网络的“你好世界”:

(X_train, y_train),(X_test, y_test) = keras.datasets.mnist.load_data()
X_train, X_test = X_train / 255.0, X_test / 255.0


net = keras.models.Sequential([
  keras.layers.Flatten(),
  keras.layers.Dense(512, activation=tf.nn.relu),
  keras.layers.Dropout(0.2),
  keras.layers.Dense(10, activation=tf.nn.softmax)
])

net.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

net.fit(X_train, y_train, epochs=5, verbose=True)
调用fit方法会导致以下异常。

版本:

keras: 2.2.4
tensorflow: 1.13.1
我用Anaconda安装了keras和tensorflow:

conda install -c conda-forge keras tensorflow
以下警告似乎可疑,但解决方案不明确:

关于模块导入:

Using TensorFlow backend.
/Users/cls/anaconda3/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.6 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.7
  return f(*args, **kwds)
编译时:

WARNING:tensorflow:From /Users/cls/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
在stdout的某个地方:

2019-05-14 16:40:10.628107: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
错误消息

---------------------------------------------------------------------------
UnboundLocalError                         Traceback (most recent call last)
<timed eval> in <module>

~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)
    950             sample_weight=sample_weight,
    951             class_weight=class_weight,
--> 952             batch_size=batch_size)
    953         # Prepare validation data.
    954         do_validation = False

~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_array_lengths, batch_size)
    675             # to match the value shapes.
    676             if not self.inputs:
--> 677                 self._set_inputs(x)
    678 
    679         if y is not None:

~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py in _set_inputs(self, inputs, outputs, training)
    587                 assert len(inputs) == 1
    588                 inputs = inputs[0]
--> 589             self.build(input_shape=(None,) + inputs.shape[1:])
    590             return
    591 

~/anaconda3/lib/python3.7/site-packages/keras/engine/sequential.py in build(self, input_shape)
    219             self.inputs = [x]
    220             for layer in self._layers:
--> 221                 x = layer(x)
    222             self.outputs = [x]
    223             self._build_input_shape = input_shape

~/anaconda3/lib/python3.7/site-packages/keras/engine/base_layer.py in __call__(self, inputs, **kwargs)
    455             # Actually call the layer,
    456             # collecting output(s), mask(s), and shape(s).
--> 457             output = self.call(inputs, **kwargs)
    458             output_mask = self.compute_mask(inputs, previous_mask)
    459 

~/anaconda3/lib/python3.7/site-packages/keras/layers/core.py in call(self, inputs, training)
    124                                  seed=self.seed)
    125             return K.in_train_phase(dropped_inputs, inputs,
--> 126                                     training=training)
    127         return inputs
    128 

~/anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py in in_train_phase(x, alt, training)
   3103     """
   3104     if training is None:
-> 3105         training = learning_phase()
   3106         uses_learning_phase = True
   3107     else:

~/anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py in learning_phase()
    133         phase = tf.placeholder_with_default(False,
    134                                             shape=(),
--> 135                                             name='keras_learning_phase')
    136         _GRAPH_LEARNING_PHASES[graph] = phase
    137     return _GRAPH_LEARNING_PHASES[graph]

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py in placeholder_with_default(input, shape, name)
   2091     A `Tensor`. Has the same type as `input`.
   2092   """
-> 2093   return gen_array_ops.placeholder_with_default(input, shape, name)
   2094 
   2095 

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/gen_array_ops.py in placeholder_with_default(input, shape, name)
   5923   shape = _execute.make_shape(shape, "shape")
   5924   _, _, _op = _op_def_lib._apply_op_helper(
-> 5925         "PlaceholderWithDefault", input=input, shape=shape, name=name)
   5926   _result = _op.outputs[:]
   5927   _inputs_flat = _op.inputs

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
    509                 dtype=dtype,
    510                 as_ref=input_arg.is_ref,
--> 511                 preferred_dtype=default_dtype)
    512           except TypeError as err:
    513             if dtype is None:

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in internal_convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, ctx, accept_symbolic_tensors)
   1173 
   1174     if ret is None:
-> 1175       ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
   1176 
   1177     if ret is NotImplemented:

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py in _constant_tensor_conversion_function(v, dtype, name, as_ref)
    302                                          as_ref=False):
    303   _ = as_ref
--> 304   return constant(v, dtype=dtype, name=name)
    305 
    306 

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py in constant(value, dtype, shape, name)
    243   """
    244   return _constant_impl(value, dtype, shape, name, verify_shape=False,
--> 245                         allow_broadcast=True)
    246 
    247 

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py in _constant_impl(value, dtype, shape, name, verify_shape, allow_broadcast)
    281       tensor_util.make_tensor_proto(
    282           value, dtype=dtype, shape=shape, verify_shape=verify_shape,
--> 283           allow_broadcast=allow_broadcast))
    284   dtype_value = attr_value_pb2.AttrValue(type=tensor_value.tensor.dtype)
    285   const_tensor = g.create_op(

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py in make_tensor_proto(values, dtype, shape, verify_shape, allow_broadcast)
    571     raise TypeError(
    572         "Element type not supported in TensorProto: %s" % numpy_dtype.name)
--> 573   append_fn(tensor_proto, proto_values)
    574 
    575   return tensor_proto

tensorflow/python/framework/fast_tensor_util.pyx in tensorflow.python.framework.fast_tensor_util.AppendBoolArrayToTensorProto()

~/anaconda3/lib/python3.7/site-packages/numpy/lib/type_check.py in asscalar(***failed resolving arguments***)
    545     warnings.warn('np.asscalar(a) is deprecated since NumPy v1.16, use '
    546                   'a.item() instead', DeprecationWarning, stacklevel=1)
--> 547     return a.item()
    548 
    549 #-----------------------------------------------------------------------------

UnboundLocalError: local variable 'a' referenced before assignment
---------------------------------------------------------------------------
取消绑定LocalError回溯(最近一次调用上次)
在里面
~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py-in-fit(self、x、y、批量大小、历元、冗余、回调、验证分割、验证数据、混洗、类权重、样本权重、初始历元、每历元的步骤、验证步骤、**kwargs)
950样品重量=样品重量,
951类重量=类重量,
-->952批次大小=批次大小)
953#准备验证数据。
954 do_验证=错误
~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py在用户数据中(自身、x、y、样本重量、类别重量、检查数组长度、批次大小)
675#以匹配值形状。
676如果不是自输入:
-->677自整定输入(x)
678
679如果y不是无:
~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py输入(自我、输入、输出、训练)
587断言长度(输入)=1
588输入=输入[0]
-->589 self.build(input_shape=(None,)+inputs.shape[1:]
590返回
591
~/anaconda3/lib/python3.7/site-packages/keras/engine/sequential.py内置(自我,输入形状)
219 self.inputs=[x]
220对于自身中的层。\u层:
-->221 x=层(x)
222自我输出=[x]
223自构建输入形状=输入形状
~/anaconda3/lib/python3.7/site-packages/keras/engine/base\u layer.py in\uuuu\u调用(self,input,**kwargs)
455#实际上是调用层,
456#收集输出、遮罩和形状。
-->457输出=自调用(输入,**kwargs)
458输出屏蔽=自计算屏蔽(输入,前一个屏蔽)
459
调用中的~/anaconda3/lib/python3.7/site-packages/keras/layers/core.py(自我、输入、培训)
124种子=自我。种子)
125列车相位返回K(下降输入、输入、,
-->126培训=培训)
127返回输入
128
~/anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow\u backend.py处于训练阶段(x、alt、训练)
3103     """
3104如果没有培训:
->3105培训=学习阶段()
3106使用\u学习\u阶段=真
3107其他:
~/anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow\u backend.py处于学习阶段()
133相位=tf.占位符_和_默认值(False,
134形状=(),
-->135 name='keras\u学习阶段')
136图学习阶段[图]=阶段
137返回图学习阶段[图]
占位符\u中的~/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/array\u ops.py带有\u默认值(输入、形状、名称)
2091“张量”与“输入”的类型相同。
2092   """
->2093返回带有默认值(输入、形状、名称)的gen_数组_ops.占位符_
2094
2095
带默认值(输入、形状、名称)的占位符中的~/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/gen\u array\u ops.py
5923 shape=\u execute.make\u shape(shape,“shape”)
5924 u,u,_op=_op_def_lib._apply_op_helper(
->5925“默认占位符”,输入=输入,形状=形状,名称=名称)
5926 _结果=_运算输出[:]
5927 _输入_平坦=_操作输入
~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py in_apply_op_helper(self,op_type_name,name,**关键字)
509数据类型=数据类型,
510 as_ref=输入参数is_ref,
-->511首选类型=默认类型)
512除TypeError作为错误外:
513如果数据类型为无:
内部转换为张量中的~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py(值、数据类型、名称、as-ref、首选数据类型、ctx、接受符号张量)
1173
1174如果ret为无:
->1175 ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
1176
1177如果未实施ret:
~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant\u op.py in\u constant\u tensor\u conversion\u函数(v,dtype,name,as\u ref)
302 as_ref=False):
303=作为参考
-->304返回常量(v,dtype=dtype,name=name)
305
306
~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py in constant(值、数据类型、形状、名称)
243   """
244返回\u常量\u impl(值、数据类型、形状、名称、验证\u形状=False,
-->245允许_广播=真)
246
247
~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant\u op.py in\u constant\u impl(值、数据类型、形状、名称、验证形状、允许广播)
281张量使用。生成张量原型(
282值,dtype=dtype,shape=shape,verify\u shape=verify\u shape,
-->283允许广播=允许广播)
284 dtype\u value=attr\u value\u pb2.AttrValue(type=tensor\u value.tensor.dtype)
285常数张量=g.create\u op(
在make_tensor_proto中~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py(值、数据类型、形状、验证形状、允许宽度)
pip install --upgrade --force-reinstall tensorflow
# pip install --upgrade --force-reinstall tensorflow-gpu