如何解决在 Keras 中创建 CNN 模型时出现属性错误
用于构建模型的函数:
def CancerModel(input_shape):
X_input = Input(input_shape)
X = ZeroPadding2D((2,2))(X_input)
X = Conv2D(8,(5,5),strides = (1,1),name = 'conv')(X)
X = Batchnormalization(axis = 3,name = 'bn1')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2,2),name='max_pool')(X)
X = Conv2D(16,name = 'conv2')(X)
X = Batchnormalization(axis = 3,name = 'bn2')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2,name='max_pool2')(X)
X = Flatten()(X)
X = Dense(120,activation='relu',name='fc1')(X)
X = Dense(84,name='fc2')(X)
X = Dense(7,activation='softmax',name='output')(X)
model = Model(inputs = X_input,outputs = output,name='CancerModel')
return model
尝试使用以下方法创建模型:
cancerModel = CancerModel(X_train.shape[1:])
但是,我收到一条错误消息,指出无法设置该属性。 我还附上了我收到的错误的屏幕截图。任何帮助将不胜感激。
解决方法
我在您的代码中没有发现错误。可能是您的 training data shape
或 Keras 版本问题(我的 Keras 版本 2.4.3
)。
def CancerModel(input_shape):
X_input = Input(input_shape)
X = ZeroPadding2D((2,2))(X_input)
X = Conv2D(8,(5,5),strides = (1,1),name = 'conv')(X)
X = BatchNormalization(axis = 3,name = 'bn1')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2,2),name='max_pool')(X)
X = Conv2D(16,name = 'conv2')(X)
X = BatchNormalization(axis = 3,name = 'bn2')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2,name='max_pool2')(X)
X = Flatten()(X)
X = Dense(120,activation='relu',name='fc1')(X)
X = Dense(84,name='fc2')(X)
X = Dense(7,activation='softmax',name='output')(X)
model = Model(inputs = X_input,outputs = X,name='CancerModel')
return model
CancerModel((224,224,3)).summary() #It works fine
也可以正常使用
CancerModel(np.ones((5,120,3)).shape[1:]).summary()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。