Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x TypeError:_call__()接受2个位置参数,但制作神经网络时给出了3个位置参数_Python 3.x_Keras_Conv Neural Network - Fatal编程技术网

Python 3.x TypeError:_call__()接受2个位置参数,但制作神经网络时给出了3个位置参数

Python 3.x TypeError:_call__()接受2个位置参数,但制作神经网络时给出了3个位置参数,python-3.x,keras,conv-neural-network,Python 3.x,Keras,Conv Neural Network,我正在为我的神经网络做超参数搜索。我的代码在第一次迭代中运行良好。但是,在第二次迭代中,它抛出了以下错误: TypeError:调用()接受2个位置参数,但给出了3个 我的代码是: def型号(转换层、过滤器): i1=输入(形状=(7000208)) i2=输入(形状=(7000,)) 对于范围内的j(转换层): 如果j==0: c1=Conv1D(过滤器,内核大小=4,激活=relu')(i1) 其他: c1=Conv1D(过滤器,内核大小=4,激活=relu')(c1) c1=平均池1d

我正在为我的神经网络做超参数搜索。我的代码在第一次迭代中运行良好。但是,在第二次迭代中,它抛出了以下错误:

TypeError:调用()接受2个位置参数,但给出了3个

我的代码是:


def型号(转换层、过滤器):
i1=输入(形状=(7000208))
i2=输入(形状=(7000,))
对于范围内的j(转换层):
如果j==0:
c1=Conv1D(过滤器,内核大小=4,激活=relu')(i1)
其他:
c1=Conv1D(过滤器,内核大小=4,激活=relu')(c1)
c1=平均池1d(2)(c1)
#c1=辍学率(0.2)(c1)
c1=展平()(c1)
打印('pos')
对于范围(1)中的i:
如果i==0:
c2=稠密(64,激活='relu')(i2)
#c2=辍学(辍学)(c2)
其他:
c2=密集(64,激活='relu')(c2)
#c2=辍学(辍学)(c2)
打印('concat')
c=串联([c1,c2])
打印('here')
对于范围(1)中的i:
x=密集(256,激活='relu',内核初始化器='normal')(c)
#x=辍学率(0.25)(x)
打印('输出')
输出=密集(5,激活='softmax')(x)
打印(“”)
模型=模型([i1,i2],[output])
model.summary()
model.compile(loss=keras.loss.categorical_交叉熵,
optimizer=keras.optimizers.Adam(),
指标=[‘准确度’])
回归模型
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
nb_conv=[2,3,4,5,6]
conv_过滤器=[100150200250300350400]
对于nb_conv中的conv_层:
对于conv_过滤器中的过滤器:
打印('转换层:',转换层,'过滤器:',过滤器)
模型=模型(转换层、过滤器)
培训生成器、验证生成器=数据生成
历史=模型。拟合生成器(生成器=培训生成器,验证数据=验证生成器,使用多处理=真,
工人(6人)
小地块(211)
plt.plot(history.history['acc'])
plt.plot(历史.历史['val_acc'])
产品名称(“型号精度”)
plt.ylabel(“精度”)
plt.xlabel('epoch')
plt.图例(['train','test',loc='左上角〕)
小地块(212)
plt.plot(history.history['loss']))
plt.绘图(历史记录,历史记录['val_loss'])
产品名称(“型号损失”)
plt.ylabel(“损失”)
plt.xlabel('epoch')
plt.图例(['train','test',loc='左上角〕)
completename_acc=路径_,用于图+'/'+str(转换层)+'+str(过滤器)+'.png'
plt.savefig(完整名称)
plt.close()
打印('下一次迭代的时间')
keras.backend.clear_session()
因此,当我的conv_层为2,conv_过滤器为150(即第二次迭代)时,它会抛出错误


Traceback (most recent call last):
  File "model.py", line 126, in <module>
    model = model(conv_layer,filters)
TypeError: __call__() takes 2 positional arguments but 3 were given

回溯(最近一次呼叫最后一次):
文件“model.py”,第126行,在
模型=模型(转换层、过滤器)
TypeError:\uuuuu call\uuuuuu()接受2个位置参数,但给出了3个

有人能解释一下为什么我会出现这个错误,因为当conv_层为2,conv_过滤器为100时,它会在第一次迭代中运行吗?如果您有任何见解,我们将不胜感激。

这里存在名称冲突重命名模型函数,以便与真实模型区分开来

改变

def model(conv_layer,filters):


是的,它起作用了。谢谢但它在第一次迭代中是如何工作的呢?您只能调用您的模型函数一次,因为它的输出是一个不同的模型函数
def get_model(conv_layer,filters):
    ....