[英]AttributeError: 'function' object has no attribute 'summary' while building CNN
I am trying to build a CNN model.我正在尝试构建一个 CNN model。 But I am encountering this error and cannot resolve it.但我遇到了这个错误,无法解决。
from keras.models import Sequential
from keras.layers import Conv2D,MaxPooling2D,Flatten,Dense
from keras.optimizers import Adam
def vgg():
kernel=(3,3)
pool=(2,2)
model=Sequential()
model.add(Conv2D(96,kernel,padding='same',input_shape=(32,32,1),activation='relu'))
model.add(Conv2D(96,kernel,padding='same',activation='relu'))
model.add(MaxPooling2D(pool,strides=2,padding='same'))
model.add(Conv2D(128,kernel,padding='same',activation='relu'))
model.add(Conv2D(128,kernel,padding='same',activation='relu'))
model.add(MaxPooling2D(pool,strides=2,padding='same'))
model.add(Conv2D(256,kernel,padding='same',activation='relu'))
model.add(Conv2D(256,kernel,padding='same',activation='relu'))
model.add(Conv2D(256,kernel,padding='same',activation='relu'))
model.add(MaxPooling2D(pool,strides=2,padding='same'))
model.add(Conv2D(512,kernel,padding='same',activation='relu'))
model.add(Conv2D(512,kernel,padding='same',activation='relu'))
model.add(Conv2D(512,kernel,padding='same',activation='relu'))
model.add(MaxPooling2D(pool,strides=2,padding='same'))
model.add(Conv2D(512,kernel,padding='same',activation='relu'))
model.add(Conv2D(512,kernel,padding='same',activation='relu'))
model.add(Conv2D(512,kernel,padding='same',activation='relu'))
model.add(MaxPooling2D(pool,strides=2,padding='same'))
model.add(Flatten())
model.add(Dense(4096,activation='relu'))
model.add(Dense(4096,activation='relu'))
model.add(Dense(43,activation='softmax'))
model.compile(Adam(lr=0.001),loss='categorical_crossentropy',metrics=['accuracy'])
return vgg
model=vgg()
print(model.summary())
I could'nt find the solution to it.我找不到解决方案。 Is it due to the more no of filters or due to higher values in dense, cause in another model I have used lesser values and they are working fine是由于过滤器数量更多还是由于密集值更高,导致在另一个 model 我使用了较小的值并且它们工作正常
It's super simple, you need to return the model
not the function itself.这非常简单,您需要返回model
而不是 function 本身。 So, in vgg
, you need to return model
:因此,在vgg
中,您需要返回model
:
def vgg():
...
...
return model #not vgg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.