在 Keras 中创建 CNN 模型时出现属性错误
Attribute error while creating CNN model in Keras
用于构建模型的函数:
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, (5, 5), strides = (1, 1), name = 'conv2')(X)
X = BatchNormalization(axis = 3, name = 'bn2')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2, 2), name='max_pool2')(X)
X = Flatten()(X)
X = Dense(120, activation='relu', name='fc1')(X)
X = Dense(84, activation='relu', 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:])
但是,我收到一条错误消息,指出无法设置该属性。
我还附上了我收到的错误的屏幕截图。任何帮助将不胜感激。
Screenshot of bug
我发现你的代码没有错误。可能是你的 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, (5, 5), strides = (1, 1), name = 'conv2')(X)
X = BatchNormalization(axis = 3, name = 'bn2')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2, 2), name='max_pool2')(X)
X = Flatten()(X)
X = Dense(120, activation='relu', name='fc1')(X)
X = Dense(84, activation='relu', 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,120,3)).shape[1:]).summary()
用于构建模型的函数:
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, (5, 5), strides = (1, 1), name = 'conv2')(X)
X = BatchNormalization(axis = 3, name = 'bn2')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2, 2), name='max_pool2')(X)
X = Flatten()(X)
X = Dense(120, activation='relu', name='fc1')(X)
X = Dense(84, activation='relu', 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:])
但是,我收到一条错误消息,指出无法设置该属性。 我还附上了我收到的错误的屏幕截图。任何帮助将不胜感激。
Screenshot of bug
我发现你的代码没有错误。可能是你的 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, (5, 5), strides = (1, 1), name = 'conv2')(X)
X = BatchNormalization(axis = 3, name = 'bn2')(X)
X = Activation('relu')(X)
X = MaxPooling2D((2, 2), name='max_pool2')(X)
X = Flatten()(X)
X = Dense(120, activation='relu', name='fc1')(X)
X = Dense(84, activation='relu', 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,120,3)).shape[1:]).summary()