Python 训练,神经网络,但为什么Model.add不起作用?
试图为我的模型创建神经网络,但“model.add”不起作用。非常感谢您的帮助。我尝试了不使用model.add,它可以工作,因此它必须与添加到模型有关。如有任何帮助,将不胜感激:) 以下是错误:Python 训练,神经网络,但为什么Model.add不起作用?,python,tensorflow,Python,Tensorflow,试图为我的模型创建神经网络,但“model.add”不起作用。非常感谢您的帮助。我尝试了不使用model.add,它可以工作,因此它必须与添加到模型有关。如有任何帮助,将不胜感激:) 以下是错误: --------------------------------------------------------------------------- InvalidArgumentError Traceback (most recent call last)
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs, op_def)
1852 try:
-> 1853 c_op = pywrap_tf_session.TF_FinishOperation(op_desc)
1854 except errors.InvalidArgumentError as e:
InvalidArgumentError: Negative dimension size caused by subtracting 64 from 1 for '{{node conv2d_5/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_5/Conv2D/ReadVariableOp)' with input shapes: [?,1,120,20], [64,1,20,20].
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
17 frames
<ipython-input-19-398c7d9e7631> in <module>()
3
4 #l2
----> 5 model.add(Conv2D(20, (64, 1), activation="relu", input_shape=(64, 120, 1)))
6 # # print(L2.shape) #0th index: # of batches, 1st index: height of output, 2nd index: width of output, 3rd index: depth -> # of filters
7 # #l3
/usr/local/lib/python3.7/dist-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
515 self._self_setattr_tracking = False # pylint: disable=protected-access
516 try:
--> 517 result = method(self, *args, **kwargs)
518 finally:
519 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer)
221 # If the model is being built continuously on top of an input layer:
222 # refresh its output.
--> 223 output_tensor = layer(self.outputs[0])
224 if len(nest.flatten(output_tensor)) != 1:
225 raise ValueError(SINGLE_LAYER_OUTPUT_ERROR_MSG)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
950 if _in_functional_construction_mode(self, inputs, args, kwargs, input_list):
951 return self._functional_construction_call(inputs, args, kwargs,
--> 952 input_list)
953
954 # Maintains info about the `Layer.call` stack.
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list)
1089 # Check input assumptions set after layer building, e.g. input shape.
1090 outputs = self._keras_tensor_symbolic_call(
-> 1091 inputs, input_masks, args, kwargs)
1092
1093 if outputs is None:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in _keras_tensor_symbolic_call(self, inputs, input_masks, args, kwargs)
820 return nest.map_structure(keras_tensor.KerasTensor, output_signature)
821 else:
--> 822 return self._infer_output_signature(inputs, args, kwargs, input_masks)
823
824 def _infer_output_signature(self, inputs, args, kwargs, input_masks):
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks)
861 # TODO(kaftan): do we maybe_build here, or have we already done it?
862 self._maybe_build(inputs)
--> 863 outputs = call_fn(inputs, *args, **kwargs)
864
865 self._handle_activity_regularization(inputs, outputs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/layers/convolutional.py in call(self, inputs)
246 inputs = array_ops.pad(inputs, self._compute_causal_padding(inputs))
247
--> 248 outputs = self._convolution_op(inputs, self.kernel)
249
250 if self.use_bias:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs)
199 """Call target, and fall back on dispatchers if there is a TypeError."""
200 try:
--> 201 return target(*args, **kwargs)
202 except (TypeError, ValueError):
203 # Note: convert_to_eager_tensor currently raises a ValueError, not a
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py in convolution_v2(input, filters, strides, padding, data_format, dilations, name)
1018 data_format=data_format,
1019 dilations=dilations,
-> 1020 name=name)
1021
1022
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py in convolution_internal(input, filters, strides, padding, data_format, dilations, name, call_from_convolution, num_spatial_dims)
1148 data_format=data_format,
1149 dilations=dilations,
-> 1150 name=name)
1151 else:
1152 if channel_index == 1:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py in _conv2d_expanded_batch(input, filters, strides, padding, data_format, dilations, name)
2602 data_format=data_format,
2603 dilations=dilations,
-> 2604 name=name)
2605 return squeeze_batch_dims(
2606 input,
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/gen_nn_ops.py in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, explicit_paddings, data_format, dilations, name)
971 padding=padding, use_cudnn_on_gpu=use_cudnn_on_gpu,
972 explicit_paddings=explicit_paddings,
--> 973 data_format=data_format, dilations=dilations, name=name)
974 _result = _outputs[:]
975 if _execute.must_record_gradient():
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(op_type_name, name, **keywords)
748 op = g._create_op_internal(op_type_name, inputs, dtypes=None,
749 name=scope, input_types=input_types,
--> 750 attrs=attr_protos, op_def=op_def)
751
752 # `outputs` is returned as a separate return value so that the output
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in _create_op_internal(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device)
590 return super(FuncGraph, self)._create_op_internal( # pylint: disable=protected-access
591 op_type, captured_inputs, dtypes, input_types, name, attrs, op_def,
--> 592 compute_device)
593
594 def capture(self, tensor, name=None, shape=None):
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in _create_op_internal(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device)
3534 input_types=input_types,
3535 original_op=self._default_original_op,
-> 3536 op_def=op_def)
3537 self._create_op_helper(ret, compute_device=compute_device)
3538 return ret
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
2014 op_def = self._graph._get_op_def(node_def.op)
2015 self._c_op = _create_c_op(self._graph, node_def, inputs,
-> 2016 control_input_ops, op_def)
2017 name = compat.as_str(node_def.name)
2018 # pylint: enable=protected-access
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs, op_def)
1854 except errors.InvalidArgumentError as e:
1855 # Convert to ValueError for backwards compatibility.
-> 1856 raise ValueError(str(e))
1857
1858 return c_op
ValueError: Negative dimension size caused by subtracting 64 from 1 for '{{node conv2d_5/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_5/Conv2D/ReadVariableOp)' with input shapes: [?,1,120,20], [64,1,20,20].
---------------------------------------------------------------------------
InvalidArgumentError回溯(最后一次最近调用)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in_create_c_op(图形、节点定义、输入、控制输入、操作定义)
1852尝试:
->1853 c_op=pywrap_tf_session.tf_FinishOperation(op_desc)
1854错误除外。InvalidArgumentError为e:
InvalidArgumentError:InvalidArgumentError:{node conv2d_5/conv2d}}=conv2d[T=DT_FLOAT,data_format=“NHWC”,dillations=[1,1,1],explicit_paddings=[],padding=“VALID”,strips=[1,1,1],使用[u gpu=true](占位符,conv2d_5/conv2d/ReadVariableOp)],输入形状:[?、1120,20]、[64,1,20,20]。
在处理上述异常期间,发生了另一个异常:
ValueError回溯(最近一次调用上次)
17帧
在()
3.
4#l2
---->5 model.add(Conv2D(20,(64,1),activation=“relu”,input_shape=(64,120,1)))
6##打印(L2.shape)#第0个索引:批次,第一个索引:输出高度,第二个索引:输出宽度,第三个索引:过滤器深度->
7##l3
/usr/local/lib/python3.7/dist-packages/tensorflow/python/training/tracking/base.py in_method_wrapper(self,*args,**kwargs)
515 self._self_setattr_tracking=False#pylint:disable=protected access
516试试:
-->517结果=方法(自身、*args、**kwargs)
518最后:
519 self._self_setattr_tracking=上一个值#pylint:disable=受保护访问
/添加中的usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/sequential.py(self,layer)
221#如果模型持续构建在输入层之上:
222#刷新其输出。
-->223输出张量=层(自输出[0])
224如果len(嵌套展平(输出张量))!=1:
225提升值错误(单层输出错误消息)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base\u layer.py in uuuuu调用(self,*args,**kwargs)
950如果处于功能构建模式(自身、输入、参数、kwargs、输入列表):
951返回自功能构造调用(输入、参数、kwargs、,
-->952输入(U列表)
953
954#维护有关“Layer.call”堆栈的信息。
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base\u layer.py in\u functional\u construction\u call(self、input、args、kwargs、input\u list)
1089#检查层构建后设置的输入假设,例如输入形状。
1090输出=self.\u keras\u tensor\u符号\u调用(
->1091输入、输入(U掩码、参数、kwargs)
1092
1093如果输出为无:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base\u layer.py in\u keras\u tensor\u symbolic\u调用(self、input、input\u掩码、args、kwargs)
820返回nest.map_结构(keras_tensor.KerasTensor,输出_签名)
821其他:
-->822返回自-推断-输出-签名(输入、参数、kwargs、输入-掩码)
823
824定义-推断-输出-签名(自身、输入、参数、kwargs、输入-掩码):
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base\u layer.py in\u expert\u output\u签名(self、input、args、kwargs、input\u掩码)
861#托多(卡夫坦):我们可能在这里建造,还是已经建造了?
862自组装(输入)
-->863输出=呼叫(输入,*args,**kwargs)
864
865自我处理活动规则化(输入、输出)
/调用中的usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/layers/convolutional.py(self,输入)
246个输入=数组操作填充(输入、自计算、因果填充(输入))
247
-->248输出=自卷积运算(输入,自内核)
249
250如果自我使用偏差:
/包装器中的usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py(*args,**kwargs)
199“调用目标,如果出现类型错误,则返回调度程序。”
200次尝试:
-->201返回目标(*args,**kwargs)
202除外(类型错误、值错误):
203#注意:将_转换为_急切_张量当前会引发一个值错误,而不是
/卷积2中的usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py(输入、过滤器、跨步、填充、数据格式、膨胀、名称)
1018数据_格式=数据_格式,
1019膨胀=膨胀,
->1020名称=名称)
1021
1022
/卷积内部的usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py(输入、过滤器、跨步、填充、数据格式、膨胀、名称、从卷积调用、数字空间dims)
1148数据_格式=数据_格式,
1149膨胀=膨胀,
->1150名称=名称)
1151其他:
1152如果通道索引=1:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py in_conv2d_expanded_batch(输入、过滤器、跨步、填充、数据格式、扩展、名称)
2602数据格式=数据格式,
2603膨胀=膨胀,
->2604名称=名称)
2605返回挤压批次dims(
2606输入,
/conv2d中的usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/gen_nn_ops.py
971 padding=padding,在gpu上使用\u cudnn\u=在gpu上使用\u cudnn\u,
972显式填充=显式填充,
-->973数据格式=数据格式
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs, op_def)
1852 try:
-> 1853 c_op = pywrap_tf_session.TF_FinishOperation(op_desc)
1854 except errors.InvalidArgumentError as e:
InvalidArgumentError: Negative dimension size caused by subtracting 64 from 1 for '{{node conv2d_5/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_5/Conv2D/ReadVariableOp)' with input shapes: [?,1,120,20], [64,1,20,20].
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
17 frames
<ipython-input-19-398c7d9e7631> in <module>()
3
4 #l2
----> 5 model.add(Conv2D(20, (64, 1), activation="relu", input_shape=(64, 120, 1)))
6 # # print(L2.shape) #0th index: # of batches, 1st index: height of output, 2nd index: width of output, 3rd index: depth -> # of filters
7 # #l3
/usr/local/lib/python3.7/dist-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
515 self._self_setattr_tracking = False # pylint: disable=protected-access
516 try:
--> 517 result = method(self, *args, **kwargs)
518 finally:
519 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer)
221 # If the model is being built continuously on top of an input layer:
222 # refresh its output.
--> 223 output_tensor = layer(self.outputs[0])
224 if len(nest.flatten(output_tensor)) != 1:
225 raise ValueError(SINGLE_LAYER_OUTPUT_ERROR_MSG)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
950 if _in_functional_construction_mode(self, inputs, args, kwargs, input_list):
951 return self._functional_construction_call(inputs, args, kwargs,
--> 952 input_list)
953
954 # Maintains info about the `Layer.call` stack.
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list)
1089 # Check input assumptions set after layer building, e.g. input shape.
1090 outputs = self._keras_tensor_symbolic_call(
-> 1091 inputs, input_masks, args, kwargs)
1092
1093 if outputs is None:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in _keras_tensor_symbolic_call(self, inputs, input_masks, args, kwargs)
820 return nest.map_structure(keras_tensor.KerasTensor, output_signature)
821 else:
--> 822 return self._infer_output_signature(inputs, args, kwargs, input_masks)
823
824 def _infer_output_signature(self, inputs, args, kwargs, input_masks):
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks)
861 # TODO(kaftan): do we maybe_build here, or have we already done it?
862 self._maybe_build(inputs)
--> 863 outputs = call_fn(inputs, *args, **kwargs)
864
865 self._handle_activity_regularization(inputs, outputs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/layers/convolutional.py in call(self, inputs)
246 inputs = array_ops.pad(inputs, self._compute_causal_padding(inputs))
247
--> 248 outputs = self._convolution_op(inputs, self.kernel)
249
250 if self.use_bias:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs)
199 """Call target, and fall back on dispatchers if there is a TypeError."""
200 try:
--> 201 return target(*args, **kwargs)
202 except (TypeError, ValueError):
203 # Note: convert_to_eager_tensor currently raises a ValueError, not a
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py in convolution_v2(input, filters, strides, padding, data_format, dilations, name)
1018 data_format=data_format,
1019 dilations=dilations,
-> 1020 name=name)
1021
1022
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py in convolution_internal(input, filters, strides, padding, data_format, dilations, name, call_from_convolution, num_spatial_dims)
1148 data_format=data_format,
1149 dilations=dilations,
-> 1150 name=name)
1151 else:
1152 if channel_index == 1:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_ops.py in _conv2d_expanded_batch(input, filters, strides, padding, data_format, dilations, name)
2602 data_format=data_format,
2603 dilations=dilations,
-> 2604 name=name)
2605 return squeeze_batch_dims(
2606 input,
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/gen_nn_ops.py in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, explicit_paddings, data_format, dilations, name)
971 padding=padding, use_cudnn_on_gpu=use_cudnn_on_gpu,
972 explicit_paddings=explicit_paddings,
--> 973 data_format=data_format, dilations=dilations, name=name)
974 _result = _outputs[:]
975 if _execute.must_record_gradient():
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(op_type_name, name, **keywords)
748 op = g._create_op_internal(op_type_name, inputs, dtypes=None,
749 name=scope, input_types=input_types,
--> 750 attrs=attr_protos, op_def=op_def)
751
752 # `outputs` is returned as a separate return value so that the output
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in _create_op_internal(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device)
590 return super(FuncGraph, self)._create_op_internal( # pylint: disable=protected-access
591 op_type, captured_inputs, dtypes, input_types, name, attrs, op_def,
--> 592 compute_device)
593
594 def capture(self, tensor, name=None, shape=None):
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in _create_op_internal(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device)
3534 input_types=input_types,
3535 original_op=self._default_original_op,
-> 3536 op_def=op_def)
3537 self._create_op_helper(ret, compute_device=compute_device)
3538 return ret
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
2014 op_def = self._graph._get_op_def(node_def.op)
2015 self._c_op = _create_c_op(self._graph, node_def, inputs,
-> 2016 control_input_ops, op_def)
2017 name = compat.as_str(node_def.name)
2018 # pylint: enable=protected-access
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs, op_def)
1854 except errors.InvalidArgumentError as e:
1855 # Convert to ValueError for backwards compatibility.
-> 1856 raise ValueError(str(e))
1857
1858 return c_op
ValueError: Negative dimension size caused by subtracting 64 from 1 for '{{node conv2d_5/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_5/Conv2D/ReadVariableOp)' with input shapes: [?,1,120,20], [64,1,20,20].