繁体   English   中英

类型错误:__init__() 为参数“strides”获得了多个值

[英]TypeError: __init__() got multiple values for argument 'strides'

Nvidia 模型显示 strides 错误,即使我将它们初始化为 (1,1) 的默认值我使用 'strides' 作为先前版本 keras 中的 'subsample' 参数的替代有人可以解释新语法使用它们。

def nvidia_model():
  model = Sequential()
  model.add(Conv2D(24,5,5, strides = (2,2), input_shape= (66,200,3), activation='relu'))
  model.add(Conv2D(36,5,5, strides = (2,2), activation = 'relu'))
  model.add(Conv2D(48,5,5, strides = (2,2), activation = 'relu'))
  model.add(Conv2D(64,3,3, activation = 'relu'))
  model.add(Conv2D(64,3,3, activation = 'relu'))
  model.add(Dropout(0.5))                                               #50% nodes turned to zero

  model.add( Flatten())
  model.add(Dense(100, activation ='relu'))
  model.add(Dropout(0.5))

  model.add(Dense(50, activation ='relu'))
  model.add(Dense(10, activation ='relu'))
  model.add(Dense(1))
  
  optimizer = Adam(lr = 1e-3)
  model.compile(loss = 'mse' , optimizer = optimizer)
  return model

model = nvidia_model()
print(model.summary)

Error:
TypeError                                 Traceback (most recent call last)
<ipython-input-83-aff2a2709b79> in <module>()
----> 1 model = nvidia_model()
      2 print(model.summary)

<ipython-input-82-7942ade664af> in nvidia_model()
      1 def nvidia_model():
      2   model = Sequential()
----> 3   model.add(Conv2D(24,5,5, strides = (2,2), input_shape= (66,200,3), activation='relu'))
      4   model.add(Conv2D(36,5,5, strides = (2,2), activation = 'relu'))
      5   model.add(Conv2D(48,5,5, strides = (2,2), activation = 'relu'))

TypeError: __init__() got multiple values for argument 'strides'

我从未使用过tensorflow ,但根据Conv2D的文档,它被定义为

tf.keras.layers.Conv2D(
    filters, kernel_size, strides=(1, 1), padding='valid', data_format=None,
    dilation_rate=(1, 1), groups=1, activation=None, use_bias=True,
    kernel_initializer='glorot_uniform', bias_initializer='zeros',
    kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None,
    kernel_constraint=None, bias_constraint=None, **kwargs
)

如您所见, strides是第三个参数。

现在您使用Conv2D(24,5,5, strides = (2,2), input_shape= (66,200,3), activation='relu') ,其中第三个参数为5 ,然后您尝试再次使用关键字设置strides范围。 您的通话中似乎有一个参数过多。

想象一下处理你的代码的小 Python gnome:“好吧,老板想要一个Conv2D的实例。他将第一个参数filters4 ,第二个参数kernel_size2 ,第三个参数strides2 。完成位置参数。现在让我们继续关键字参数。这里我们有strides和...哦,我已经有了strides ,所以我不知道该怎么办。老板可能生气了,所以我会告诉他到底发生了什么: TypeError: __init__() got multiple values for argument 'strides'

model.add(Conv2D(24,5,5, strides = (2,2), input_shape= (66,200,3), activation='relu'))
model.add(Conv2D(36,5,5, strides = (2,2), activation = 'relu'))
model.add(Conv2D(48,5,5, strides = (2,2), activation = 'relu'))

对于这些行,请使用括号,如下例所示

model.add(Conv2D(24,(5,5), strides = (2,2), input_shape= (66,200,3), activation='relu'))
model.add(Conv2D(36,(5,5), strides = (2,2), activation = 'relu'))
model.add(Conv2D(48,(5,5), strides = (2,2), activation = 'relu'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM