Python 因'的1减去3而导致的负尺寸;最大池2d_8/MaxPool';

Python 因'的1减去3而导致的负尺寸;最大池2d_8/MaxPool';,python,tensorflow,keras,Python,Tensorflow,Keras,我在尝试实现AlexNet以解决GTSRB问题时收到此错误消息:“max_poolig2d_8/MaxPool”的1减去3导致维度大小为负 错误位于标有#3的块中 代码: modelAlex=buildAlex(28,28,1,43) 回溯: --------------------------------------------------------------------------- InvalidArgumentError Traceback

我在尝试实现AlexNet以解决GTSRB问题时收到此错误消息:“max_poolig2d_8/MaxPool”的1减去3导致维度大小为负 错误位于标有#3的块中

代码:

modelAlex=buildAlex(28,28,1,43)

回溯:

---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1550   try:
-> 1551     c_op = c_api.TF_FinishOperation(op_desc)
   1552   except errors.InvalidArgumentError as e:

InvalidArgumentError: Negative dimension size caused by subtracting 3 from 1 for 'max_pooling2d_8/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,256].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-36-7205823f509c> in <module>
----> 1 modelAlex = buildAlex(28, 28, 1, 43)

<ipython-input-35-e4a6adb73a0a> in buildAlex(width, height, depth, classes, reg)
     36     model.add(Activation("relu"))
     37     model.add(BatchNormalization(axis=chanDim))
---> 38     model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) #3
     39     model.add(Dropout(0.25))
     40 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
    456     self._self_setattr_tracking = False  # pylint: disable=protected-access
    457     try:
--> 458       result = method(self, *args, **kwargs)
    459     finally:
    460       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer)
    191       # If the model is being built continuously on top of an input layer:
    192       # refresh its output.
--> 193       output_tensor = layer(self.outputs[0])
    194       if len(nest.flatten(output_tensor)) != 1:
    195         raise TypeError('All layers in a Sequential model '

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, inputs, *args, **kwargs)
    660                     not base_layer_utils.is_in_eager_or_tf_function()):
    661                   with auto_control_deps.AutomaticControlDependencies() as acd:
--> 662                     outputs = call_fn(inputs, *args, **kwargs)
    663                     # Wrap Tensors in `outputs` in `tf.identity` to avoid
    664                     # circular dependencies.

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/layers/pooling.py in call(self, inputs)
    246         strides=strides,
    247         padding=self.padding.upper(),
--> 248         data_format=conv_utils.convert_data_format(self.data_format, 4))
    249     return outputs
    250 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/ops/nn_ops.py in max_pool(value, ksize, strides, padding, data_format, name, input)
   3750         padding=padding,
   3751         data_format=data_format,
-> 3752         name=name)
   3753 
   3754 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/ops/gen_nn_ops.py in max_pool(input, ksize, strides, padding, data_format, name)
   5670   _, _, _op = _op_def_lib._apply_op_helper(
   5671         "MaxPool", input=input, ksize=ksize, strides=strides, padding=padding,
-> 5672                    data_format=data_format, name=name)
   5673   _result = _op.outputs[:]
   5674   _inputs_flat = _op.inputs

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
    786         op = g.create_op(op_type_name, inputs, dtypes=None, name=scope,
    787                          input_types=input_types, attrs=attr_protos,
--> 788                          op_def=op_def)
    789       return output_structure, op_def.is_stateful, op
    790 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py in create_op(***failed resolving arguments***)
    463     return super(FuncGraph, self).create_op(
    464         op_type, inputs, dtypes, input_types, name, attrs, op_def,
--> 465         compute_device=compute_device)
    466 
    467   def capture(self, tensor, name=None):

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
    505                 'in a future version' if date is None else ('after %s' % date),
    506                 instructions)
--> 507       return func(*args, **kwargs)
    508 
    509     doc = _add_deprecated_arg_notice_to_docstring(

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in create_op(***failed resolving arguments***)
   3294           input_types=input_types,
   3295           original_op=self._default_original_op,
-> 3296           op_def=op_def)
   3297       self._create_op_helper(ret, compute_device=compute_device)
   3298     return ret

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
   1712           op_def, inputs, node_def.attr)
   1713       self._c_op = _create_c_op(self._graph, node_def, grouped_inputs,
-> 1714                                 control_input_ops)
   1715 
   1716     # Initialize self._outputs.

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1552   except errors.InvalidArgumentError as e:
   1553     # Convert to ValueError for backwards compatibility.
-> 1554     raise ValueError(str(e))
   1555 
   1556   return c_op

ValueError: Negative dimension size caused by subtracting 3 from 1 for 'max_pooling2d_8/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,256].
---------------------------------------------------------------------------
InvalidArgumentError回溯(最后一次最近调用)
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in\u create\u c\u op(图形、节点定义、输入、控制输入)
1550尝试:
->1551 c_op=c_api.TF_FinishOperation(op_desc)
1552错误除外。InvalidArgumentError为e:
InvalidArgumentError:输入形状为[?,1,1256]的“max_Poolg2D_8/MaxPool”(op:“MaxPool”)从1中减去3导致负维度大小。
在处理上述异常期间,发生了另一个异常:
ValueError回溯(最近一次调用上次)
在里面
---->1 modelAlex=buildAlex(28,28,1,43)
在buildAlex中(宽度、高度、深度、等级、注册)
36型号。添加(激活(“relu”))
37型号。添加(批量标准化(轴=chanDim))
--->38 model.add(MaxPoolig2D(池大小=(3,3),步幅=(2,2)))#3
39型号。添加(辍学率(0.25))
40
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py in_method_wrapper(self,*args,**kwargs)
456 self._self_setattr_tracking=False#pylint:disable=protected access
457试试:
-->458结果=方法(自身、*args、**kwargs)
459最后:
460 self._self_setattr_tracking=上一个值#pylint:disable=受保护访问
添加中的~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py(self,layer)
191#如果模型持续构建在输入层之上:
192#刷新其输出。
-->193输出张量=层(自输出[0])
194如果len(嵌套展平(输出张量))!=1:
195 raise TypeError('序列模型中的所有层'
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in uu调用(self,input,*args,**kwargs)
660非基本层实用程序。是否在函数()中:
661将auto_control_deps.AutomaticControlDependencies()作为acd:
-->662输出=呼叫(输入,*args,**kwargs)
663#在'tf.identity'中的'outputs'中包裹张量以避免
664#循环依赖。
调用中的~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/layers/pooling.py(self,输入)
246步幅=步幅,
247 padding=self.padding.upper(),
-->248数据格式=conv_utils.convert_数据格式(self.data_格式,4))
249个返回输出
250
max_pool中的~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/ops/nn_ops.py(值、大小、跨距、填充、数据格式、名称、输入)
3750填充=填充,
3751数据格式=数据格式,
->3752名称=名称)
3753
3754
max_pool中的~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/ops/gen_nn_ops.py(输入、大小、跨步、填充、数据格式、名称)
5670 u,u,_op=_op_def_lib._apply_op_helper(
5671“MaxPool”,输入=输入,ksize=ksize,步长=步长,填充=填充,
->5672数据格式=数据格式,名称=名称)
5673 _结果=_运算输出[:]
5674 _输入_平坦=_操作输入
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py in_apply_op_helper(self,op_type_name,name,**关键字)
786 op=g.create_op(op_type_name,inputs,dtypes=None,name=scope,
787输入类型=输入类型,属性=属性协议,
-->788 op_def=op_def)
789返回输出结构,op_def.is_stateful,op
790
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py在create_op(***解析参数失败***)
463返回超级(函数图,自)。创建(
464操作类型、输入、数据类型、输入类型、名称、属性、操作定义、,
-->465计算设备=计算设备)
466
467 def捕获(自、张量、名称=无):
新函数中的~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py(*args,**kwargs)
505“在未来版本中”如果日期不是其他日期(“在%s“%date”之后),
506(说明)
-->507返回函数(*args,**kwargs)
508
509 doc=\u添加\u不推荐的\u参数\u通知\u到\u docstring(
在create_op(***解析参数失败***)中~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py
3294输入类型=输入类型,
3295原始值=self.\u默认值\u原始值,
->3296 op_def=op_def)
3297 self.\u create\u op\u helper(ret,compute\u device=compute\u device)
3298返回ret
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in_uuuinit_uuu(self,node_def,g,input,output_type,control_input,input_type,original_op,op_def)
1712操作定义,输入,节点定义属性)
1713 self._c_op=_create_c_op(self._图形、节点定义、分组输入、,
->1714控制(输入操作)
1715
1716#初始化self._输出。
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in\u create\u c\u op(图形、节点定义、输入、控制输入)
1552除了错误。在
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1550   try:
-> 1551     c_op = c_api.TF_FinishOperation(op_desc)
   1552   except errors.InvalidArgumentError as e:

InvalidArgumentError: Negative dimension size caused by subtracting 3 from 1 for 'max_pooling2d_8/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,256].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-36-7205823f509c> in <module>
----> 1 modelAlex = buildAlex(28, 28, 1, 43)

<ipython-input-35-e4a6adb73a0a> in buildAlex(width, height, depth, classes, reg)
     36     model.add(Activation("relu"))
     37     model.add(BatchNormalization(axis=chanDim))
---> 38     model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) #3
     39     model.add(Dropout(0.25))
     40 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
    456     self._self_setattr_tracking = False  # pylint: disable=protected-access
    457     try:
--> 458       result = method(self, *args, **kwargs)
    459     finally:
    460       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer)
    191       # If the model is being built continuously on top of an input layer:
    192       # refresh its output.
--> 193       output_tensor = layer(self.outputs[0])
    194       if len(nest.flatten(output_tensor)) != 1:
    195         raise TypeError('All layers in a Sequential model '

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, inputs, *args, **kwargs)
    660                     not base_layer_utils.is_in_eager_or_tf_function()):
    661                   with auto_control_deps.AutomaticControlDependencies() as acd:
--> 662                     outputs = call_fn(inputs, *args, **kwargs)
    663                     # Wrap Tensors in `outputs` in `tf.identity` to avoid
    664                     # circular dependencies.

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/keras/layers/pooling.py in call(self, inputs)
    246         strides=strides,
    247         padding=self.padding.upper(),
--> 248         data_format=conv_utils.convert_data_format(self.data_format, 4))
    249     return outputs
    250 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/ops/nn_ops.py in max_pool(value, ksize, strides, padding, data_format, name, input)
   3750         padding=padding,
   3751         data_format=data_format,
-> 3752         name=name)
   3753 
   3754 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/ops/gen_nn_ops.py in max_pool(input, ksize, strides, padding, data_format, name)
   5670   _, _, _op = _op_def_lib._apply_op_helper(
   5671         "MaxPool", input=input, ksize=ksize, strides=strides, padding=padding,
-> 5672                    data_format=data_format, name=name)
   5673   _result = _op.outputs[:]
   5674   _inputs_flat = _op.inputs

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
    786         op = g.create_op(op_type_name, inputs, dtypes=None, name=scope,
    787                          input_types=input_types, attrs=attr_protos,
--> 788                          op_def=op_def)
    789       return output_structure, op_def.is_stateful, op
    790 

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py in create_op(***failed resolving arguments***)
    463     return super(FuncGraph, self).create_op(
    464         op_type, inputs, dtypes, input_types, name, attrs, op_def,
--> 465         compute_device=compute_device)
    466 
    467   def capture(self, tensor, name=None):

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
    505                 'in a future version' if date is None else ('after %s' % date),
    506                 instructions)
--> 507       return func(*args, **kwargs)
    508 
    509     doc = _add_deprecated_arg_notice_to_docstring(

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in create_op(***failed resolving arguments***)
   3294           input_types=input_types,
   3295           original_op=self._default_original_op,
-> 3296           op_def=op_def)
   3297       self._create_op_helper(ret, compute_device=compute_device)
   3298     return ret

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
   1712           op_def, inputs, node_def.attr)
   1713       self._c_op = _create_c_op(self._graph, node_def, grouped_inputs,
-> 1714                                 control_input_ops)
   1715 
   1716     # Initialize self._outputs.

~/Documents/Environments/my_env/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1552   except errors.InvalidArgumentError as e:
   1553     # Convert to ValueError for backwards compatibility.
-> 1554     raise ValueError(str(e))
   1555 
   1556   return c_op

ValueError: Negative dimension size caused by subtracting 3 from 1 for 'max_pooling2d_8/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,256].
               (28, 28)
                   |
                   V
    model.add(Conv2D(96, (11, 11), strides=(4, 4), ...)
                   |
                   V
                (7, 7)
    model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) #1
                   |
                   V
                (3, 3)
    model.add(Conv2D(256, (5, 5), padding="same",
        kernel_regularizer=l2(reg)))
    model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) #2
                   |
                   V
                (1, 1)

    model.ad(Dropout(0.25))

    # Block #3: CONV => RELU => CONV => RELU => CONV => RELU
    # Block #3: CONV => RELU => CONV => RELU => CONV => RELU
    model.add(Conv2D(384, (3, 3), padding="same",
        kernel_regularizer=l2(reg)))
    model.add(Conv2D(384, (3, 3), padding="same",
        kernel_regularizer=l2(reg)))
    model.add(Conv2D(256, (3, 3), padding="same",
        kernel_regularizer=l2(reg)))
(Error) --->model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) #3
    model.add(Dropout(0.25))