__init__() 得到了意外的关键字参数 'inputs'
__init__() got an unexpected keyword argument 'inputs'
class Model:
def __init__(self):
self.model = Sequential()
self.model.add(Conv2D(24, 3, 2, 'valid', input_shape=(75, 75, 3)))
self.model.add(BatchNormalization())
self.model.add(Conv2D(24, 3, 2))
self.model.add(BatchNormalization())
self.model.add(Conv2D(24, 3, 2))
self.model.add(BatchNormalization())
self.model.add(Conv2D(24, 3, 2))
self.model.add(BatchNormalization())
self.model.add(Flatten())
def get_model(self):
return self.model
class CNN_MLP:
def __init__(self):
model = Model()
self.model = model.get_model()
self.optimizer = optimizers
def get_model(self):
self.model = self.extend(self.model)
return self.model
def extend(self, model):
self.model = model
self.sequence = Input(shape=(75, 75, 3), name='Sequence')
self.features = Input(shape=(11, ), name='Features')
conv_sequence = self.model(self.sequence)
merged_features = concatenate([conv_sequence, self.features])
fc1 = Dense(256, activation='relu')(merged_features)
fc2 = Dense(256, activation='relu')(fc1)
logits = Dense(10, activation='softmax')(fc2)
# In the following statement I am getting the error
self.model = Model(inputs=[self.sequence, self.features], outputs=[logits])
return self.model
我正在尝试执行上述代码并遇到上述错误。我使用的是 Keras 版本 2.2.4-tf。我无法理解错误背后的原因。
谁能帮我确定并解决问题?
谢谢!
编辑 1:完整追溯:
<ipython-input-29-5112dc1649fd> in <module>()
1 if args.model == 'CNN_MLP':
2 model = CNN_MLP()
----> 3 model = model.get_model()
1 frames
<ipython-input-28-6491bbcf21c5> in get_model(self)
6
7 def get_model(self):
----> 8 self.model = self.extend(self.model)
9 return self.model
10
<ipython-input-28-6491bbcf21c5> in extend(self, model)
20 logits = Dense(10, activation='softmax')(fc2)
21
---> 22 self.model = Model(inputs=[self.sequence, self.features], outputs=[logits])
23 return self.model
TypeError: __init__() got an unexpected keyword argument 'inputs'
您定义了一个名为 Model
的 class,因此这会遮蔽 class keras.models.Model
,因此当您尝试实例化 Model
时,它会使用您的class 而不是 Keras'。
一个简单的解决方案是在调用中完全限定包名称:
self.model = keras.models.Model(inputs=[self.sequence, self.features], outputs=[logits])
class Model:
def __init__(self):
self.model = Sequential()
self.model.add(Conv2D(24, 3, 2, 'valid', input_shape=(75, 75, 3)))
self.model.add(BatchNormalization())
self.model.add(Conv2D(24, 3, 2))
self.model.add(BatchNormalization())
self.model.add(Conv2D(24, 3, 2))
self.model.add(BatchNormalization())
self.model.add(Conv2D(24, 3, 2))
self.model.add(BatchNormalization())
self.model.add(Flatten())
def get_model(self):
return self.model
class CNN_MLP:
def __init__(self):
model = Model()
self.model = model.get_model()
self.optimizer = optimizers
def get_model(self):
self.model = self.extend(self.model)
return self.model
def extend(self, model):
self.model = model
self.sequence = Input(shape=(75, 75, 3), name='Sequence')
self.features = Input(shape=(11, ), name='Features')
conv_sequence = self.model(self.sequence)
merged_features = concatenate([conv_sequence, self.features])
fc1 = Dense(256, activation='relu')(merged_features)
fc2 = Dense(256, activation='relu')(fc1)
logits = Dense(10, activation='softmax')(fc2)
# In the following statement I am getting the error
self.model = Model(inputs=[self.sequence, self.features], outputs=[logits])
return self.model
我正在尝试执行上述代码并遇到上述错误。我使用的是 Keras 版本 2.2.4-tf。我无法理解错误背后的原因。
谁能帮我确定并解决问题?
谢谢!
编辑 1:完整追溯:
<ipython-input-29-5112dc1649fd> in <module>()
1 if args.model == 'CNN_MLP':
2 model = CNN_MLP()
----> 3 model = model.get_model()
1 frames
<ipython-input-28-6491bbcf21c5> in get_model(self)
6
7 def get_model(self):
----> 8 self.model = self.extend(self.model)
9 return self.model
10
<ipython-input-28-6491bbcf21c5> in extend(self, model)
20 logits = Dense(10, activation='softmax')(fc2)
21
---> 22 self.model = Model(inputs=[self.sequence, self.features], outputs=[logits])
23 return self.model
TypeError: __init__() got an unexpected keyword argument 'inputs'
您定义了一个名为 Model
的 class,因此这会遮蔽 class keras.models.Model
,因此当您尝试实例化 Model
时,它会使用您的class 而不是 Keras'。
一个简单的解决方案是在调用中完全限定包名称:
self.model = keras.models.Model(inputs=[self.sequence, self.features], outputs=[logits])