Python TypeError:(';关键字参数未理解:';,';子样本';)
我试图实现以下代码,但它抛出了一个错误 打字错误Python TypeError:(';关键字参数未理解:';,';子样本';),python,pandas,keras,tensorflow2.0,Python,Pandas,Keras,Tensorflow2.0,我试图实现以下代码,但它抛出了一个错误 打字错误 Traceback (most recent call last) <ipython-input-29-6ed67c712ed4> in <module>() 28 return model 29 ---> 30 model = nvidia_model() 31 print(model.summary()) 32 # dead relu
Traceback (most recent call last)
<ipython-input-29-6ed67c712ed4> in <module>()
28 return model
29
---> 30 model = nvidia_model()
31 print(model.summary())
32 # dead relu problem: when a node in the network essentially dies and only feeds value of 0 to the following nodes.
5 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/generic_utils.py in validate_kwargs(kwargs, allowed_kwargs, error_message)
776 for kwarg in kwargs:
777 if kwarg not in allowed_kwargs:
--> 778 raise TypeError(error_message, kwarg)
779
780
TypeError: ('Keyword argument not understood:', 'subsample')
尝试使用池而不是子样本。通常这会起作用。我被困在同一个错误上。以下是我的发现:
卷积2D
是Keras v1 API(文档:)
Conv2D
是较新的v2 API(文档:)
我通过以下更改使其工作:
def nvidia_model():
模型=顺序()
添加(卷积2D(24,5,5,子样本=(2,2),输入_形状=(66200,3),激活=(relu'))
add(卷积2d(36,5,5,子样本=(2,2),激活=(relu'))
add(卷积2d(48,5,5,子样本=(2,2),激活=(relu'))
添加(卷积2D(64,3,3,activation='relu'))
模型。添加(辍学率(0.5))
model.add(展平())
添加(密集(100,激活='relu'))
模型。添加(辍学率(0.5))
添加(密集(50,激活='relu'))
模型。添加(辍学率(0.5))
添加(密集(10,激活='relu'))
模型。添加(辍学率(0.5))
模型.添加(密集(1))#输出预测的转向角
优化器=Adam(lr=1e-4)
compile(loss='mse',optimizer=optimizer)
回归模型
型号=nvidia_型号()
打印(model.summary())
请将代码替换为以下内容:
def nvidia_model():
模型=顺序()
添加(卷积2D(24,(5,5),子样本=(2,2),输入_形状=(66200,3),激活=(relu'))
添加(卷积2D(36,(5,5),子样本=(2,2),激活=(relu'))
add(卷积2d(48,(5,5),子样本=(2,2),激活=(relu'))
添加(卷积2d(64,(3,3),activation='relu'))
模型。添加(辍学率(0.5))
model.add(展平())
添加(密集(100,激活='relu'))
模型。添加(辍学率(0.5))
添加(密集(50,激活='relu'))
模型。添加(辍学率(0.5))
添加(密集(10,激活='relu'))
模型。添加(辍学率(0.5))
模型.添加(密集(1))#输出预测的转向角
优化器=Adam(lr=1e-4)
compile(loss='mse',optimizer=optimizer)
回归模型
型号=nvidia_型号()
打印(model.summary())
(注意我添加了括号。)如果代码仍然不起作用,则将
子样本
替换为步幅
无处不在添加一个独立的代码来重现您的问题。您找到解决此问题的方法了吗?我也尝试过同样的方法,但它抛出了一个池大小未定义的错误。你的子样本在哪里?
def nvidia_model():
model= Sequential()
model.add(Convolution2D(24, 5, 5, subsample=(2, 2), input_shape=(66, 200, 3), activation='relu'))
model.add(Convolution2D(36, 5, 5, subsample=(2, 2), activation='relu'))
model.add(Convolution2D(48, 5, 5, subsample=(2, 2), activation='relu'))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(100, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(50, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(1)) # output the predicted steering angle
optimizer = Adam(lr=1e-4)
model.compile(loss='mse', optimizer=optimizer)
return model
model = nvidia_model()
print(model.summary())
model.add(Convolution2D(24, 5, 5, subsample=(2, 2), input_shape=(66, 200, 3), activation='relu'))
model.add(Convolution2D(36, 5, 5, subsample=(2, 2), activation='relu'))
model.add(Convolution2D(48, 5, 5, subsample=(2, 2), activation='relu'))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(Conv2D(24, 5, 2, input_shape = (66, 200, 3), activation = 'relu'))
model.add(Conv2D(36, 5, 2, activation = 'relu'))
model.add(Conv2D(48, 5, 2, activation = 'relu'))
model.add(Conv2D(64, 3, activation = 'relu'))
model.add(Conv2D(64, 3, activation = 'relu'))