属性错误:';非类型';对象没有属性'_入站节点';在Keras的自动编码器中

属性错误:';非类型';对象没有属性'_入站节点';在Keras的自动编码器中,keras,attributeerror,nonetype,autoencoder,Keras,Attributeerror,Nonetype,Autoencoder,我无法解决以下错误,请接受我的道歉,如果这听起来很幼稚,我对Keras很陌生 编码器的输出实际上是一个复数,因此每个输出都是实部和虚部,输入_h1也是一个复数,实部和虚部表示为向量。我想把它们都乘起来 #输入位 输入\位1=输入(形状=(2,)) 输入\位2=输入(形状=(2,)) #输入通道 输入\ uH1=输入(形状=(2,)) 输入\ uH2=输入(形状=(2,)) #连接两个输入 输入位=keras.layers.concatenate([输入位1,输入位2],轴=1) 打印(输入位)

我无法解决以下错误,请接受我的道歉,如果这听起来很幼稚,我对Keras很陌生

编码器的输出实际上是一个复数,因此每个输出都是实部和虚部,输入_h1也是一个复数,实部和虚部表示为向量。我想把它们都乘起来

#输入位
输入\位1=输入(形状=(2,))
输入\位2=输入(形状=(2,))
#输入通道
输入\ uH1=输入(形状=(2,))
输入\ uH2=输入(形状=(2,))
#连接两个输入
输入位=keras.layers.concatenate([输入位1,输入位2],轴=1)
打印(输入位)
#创建编码器
m1=密集(64,激活='relu')(输入_位)
m2=密度(128,活化='relu')(m1)
encoded1=密集(2,激活='线性')(m2)
#规范化编码值
encoded=Lambda(Lambda x:K.l2_归一化(x,轴=1))(encoded1)
#编码器的输出实际上是一个复数,因此每个输出都是实部和虚部,输入_h1也是一个复数,实部和虚部表示为向量。我想把它们都乘起来。
#mt1是复数乘法的实部
mt1=encoded[:,0:1]*input_h1[:,0:1]-encoded[:,1:2]*input_h1[:,1:2]
打印(mt1)
#nt1是复数乘法的虚部
nt1=encoded[:,0:1]*输入_h1[:,1:2]+encoded[:,1:2]*输入_h1[:,0:1]
印刷品(nt1)
#连接实部和虚部以输入解码器
mnt2=keras.layers.concatenate([mt1,nt1],轴=1)
打印(mnt2)
#解码器1
x5=密集(1024,激活='relu')(mnt2)
x6=密集(512,激活='relu')(x5)
x7=密集(64,激活='relu')(x6)
解码_UP1=密集(2,激活='tanh')(x7)
#解码器2
a3=密集型(1024,激活='relu')(mnt2)
a4=致密(512,活化='relu')(a3)
a5=密度(64,激活='relu')(a4)
解码的_UP2=密集(2,激活='tanh')(a5)
decoded=keras.layers.concatenate([decoded\u UP1,decoded\u UP2],轴=1)
自动编码器=模型([输入位S1,输入位S2,输入位h1,输入位h2],已解码)
编译(优化器='adadelta',loss='binary\u crossentropy')
autoencoder.summary()
我得到以下输出/错误:
AttributeError回溯(最近一次调用)
在()
35解码=keras.layers.concatenate([decoded_UP1,decoded_UP2],axis=1)
36
--->37自动编码器=型号([输入位S1、输入位S2、输入位h1、输入位h2],已解码)
38 autoencoder.compile(优化器='adadelta',loss='binary\u crossentropy')
39自动编码器.摘要()
AttributeError:“非类型”对象没有属性“\u入站节点”

为了提高代码的清晰度,您应该创建多个模型,例如一个用于编码器,一个用于解码器。这样,您就可以为每个:

Bits编码器示例:

从keras.layers导入输入,密集,连接
从keras.models导入模型
#输入
输入\位1=输入(形状=(2,))
输入\位2=输入(形状=(2,))
输入位=keras.layers.concatenate([输入位1,输入位2],轴=1)
#隐藏层
编码器\u位\u h1=密集(64,激活='relu')(输入\u位)
编码器\u位\u h2=密集(128,激活='relu')(编码器\u位\u h1)
编码器\u位\u h3=密集(2,激活='线性')(编码器\u位\u h2)
#创建模型
位编码器=模型(输入=[输入位S1,输入位S2],输出=[编码器位h3])
bits_编码器摘要()
返回位编码器配置:

__________________________________________________________________________________________________
层(类型)输出形状参数#连接到
==================================================================================================
输入_5(输入层)(无,2)0
__________________________________________________________________________________________________
输入_6(输入层)(无,2)0
__________________________________________________________________________________________________
连接_2(连接)(无,4)0输入_5[0][0]
输入_6[0][0]
__________________________________________________________________________________________________
密集_4(密集)(无,64)320串联_2[0][0]
__________________________________________________________________________________________________
密集型_5(密集型)(无,128)8320密集型_4[0][0]
__________________________________________________________________________________________________
致密_6(致密)(无,2)258致密_5[0][0]
==================================================================================================
总参数:8898
可培训参数:8898
不可训练参数:0
__________________________________________________________________________________________________

您能提供更多关于该型号的详细信息吗?并且有更容易理解的层名称,如解码器\u h1,输入\u h1不清楚,h1通常指第一个隐藏层。