首页 > 解决方案 > 逐元素乘法tenserflow错误

问题描述

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

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))

我使用以下 kernel_constraint 函数:

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 我有以下错误:

ValueError: Dimensions must be equal, but are 795 and 2 for 'training_63/Adam/Mul_17' (op: 'Mul') with input shapes: [795,2],

[2,795]。

如果我使用第二个乘法

ValueError:尺寸必须相等,但对于输入形状为 [2,795]、[795,2] 的“training_64/Adam/Mul_6”(操作:“Mul”),尺寸必须是 2 和 795。

我无法理解错误在哪里。先感谢您

标签: pythonnetworkingautoencoder

解决方案


推荐阅读