簡體   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