为什么会这样说:“TypeError:\uuuuu调用\uuuuuu()缺少1个必需的位置参数:'inputs'”

2024-05-14 18:45:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图使一个自定义vgg样的模式,与辍学和swish激活功能。我完全不明白这里有什么问题。我是初学者,所以可能我完全错了。但我不这么认为,因为我是以教程和指南为例的

代码如下:

from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Dropout
from keras.layers import Flatten, Activation
from keras.applications.vgg16 import VGG16
from keras.models import Model
from keras import backend as K

def swish(x):
    return K.sigmoid(x) * x

custom_vgg = Sequential()
img_width = 224
img_height = 224
vgg_model = VGG16(include_top=False, weights='imagenet',input_shape=(img_width, img_height, 3))
print(vgg_model.get_config())
#vgg_model.save_weights('models/vgg_weights.h5')
for layer in vgg_model.layers:
    if layer.__class__.__name__=='MaxPooling2D':
        layer.trainable = False
        custom_vgg.add(layer(activation = swish))
        custom_vgg.add(Dropout(0.4))
    else :
        custom_vgg.add(layer)
custom_vgg.add(Flatten())
custom_vgg.add(Dense(1024,activation=swish))
custom_vgg.add(Dense(1024,activation=swish))
custom_vgg.add(Dense(128, activation = "softmax"))

custom_vgg.compile(optimizer = "adam", loss = "categorical_crossentropy", metrics = ["accuracy"])

custom_vgg.summary() 

我这样说:

Traceback (most recent call last):
  File "/Users/shavkatsultanov/Documents/SCHUETZ/tensor_flow/vgg_swish.py", line 20, in <module>
    custom_vgg.add(layer(activation = swish))
TypeError: __call__() missing 1 required positional argument: 'inputs'

我想知道,因为我尝试过类似的事情,迭代层并添加到另一个模型中,并且成功了。另外,当它在第20行时,它不应该期望任何“输入”或其他什么

如果有人能帮忙,那太好了,谢谢

编辑:我想知道if语句的内容是否正确,询问类名,这是否可能是错误的?真希望有人能解决这个问题


Tags: fromimportaddlayerimgmodelmodelslayers
1条回答
网友
1楼 · 发布于 2024-05-14 18:45:21
custom_vgg.add(layer(activation = swish))

您正在调用layer对象(这不是创建层,而是调用从现有模型获得的层)。显然,keras层是可调用的,layer(...)是一堆内部逻辑的包装器(我认为这不是一个很好的API)

不管怎样,只是。。。不要叫图层

相关问题 更多 >

    热门问题