Python 元素相乘张量流错误

Python 元素相乘张量流错误,python,networking,autoencoder,Python,Networking,Autoencoder,我用这种方法制作了我的自动编码器 autoencoder = Sequential() Atac=Atac.iloc[range(2),range(2)] autoencoder.add(Dense(minFeature, activation='relu',name="encoder4",input_shape=(Atac.shape[1],),kernel_constraint=prova())) autoencoder.add(Dense(Atac.shape[1], activation

我用这种方法制作了我的自动编码器

autoencoder = Sequential()
Atac=Atac.iloc[range(2),range(2)]
autoencoder.add(Dense(minFeature, activation='relu',name="encoder4",input_shape=(Atac.shape[1],),kernel_constraint=prova()))
autoencoder.add(Dense(Atac.shape[1], activation='relu',name="decoder4",kernel_constraint=prova()))

autoencoder.compile(optimizer=keras.optimizers.Adam( lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0), loss='mean_squared_error')
autoencoder.summary()

autoencoder_train = autoencoder.fit(Atac, Atac, batch_size=256, epochs=1,validation_data=(Atac, Atac))
和im使用以下内核约束函数:

class prova(constraints.Constraint):
    def __call__(self, w):
        #return tf.math.multiply(w,tf.constant(np.asarray(relationMatrix),tf.float32))
        return tf.math.multiply(w,tf.transpose(tf.constant(np.asarray(relationMatrix),tf.float32)))
但这是疯狂的,如果我使用第一个multilpy,我有以下错误:

[2795]

如果我用第二个乘法

ValueError:尺寸必须相等,但为2和795 “training_64/Adam/Mul_6”(作品:“Mul”)和输入形状:[2795], [795,2]


我不明白哪里出错了。提前谢谢

tf.math.multiply(x,y)在x和y之间进行元素相乘。例如,如果x有[3,5]维度,y也应该有[3,5]维度。在相乘之前检查“w”和“relationMatrix”的维度,然后尝试进行相应的转换。Hi timedacorn,谢谢你的回答,我检查了w的维度,但这就是问题所在,维度根据我相乘的矩阵而变化。我真的不明白错误在哪里。在做其他实验时,我才意识到约束函数prova被调用了两次,每次都有不同的形状。张量(“training_3/Adam/sub_4:0”,shape=(2795),dtype=float32)张量(“training_3/Adam/sub_10:0”,shape=(795,2),dtype=float32)
ValueError: Dimensions must be equal, but are 795 and 2 for 'training_63/Adam/Mul_17' (op: 'Mul') with input shapes: [795,2],