Python AttributeError:“Tensor”对象在使用后端随机时没有属性“\u keras\u history”
我在Keras中实现了一个WGAN-GP,在这里我计算两个张量的随机加权平均值Python AttributeError:“Tensor”对象在使用后端随机时没有属性“\u keras\u history”,python,tensorflow,keras,Python,Tensorflow,Keras,我在Keras中实现了一个WGAN-GP,在这里我计算两个张量的随机加权平均值 def random_weighted_average(self, generated, real): alpha = K.random_uniform(shape=K.shape(real)) diff = keras.layers.Subtract()([generated, real]) return keras.layers.Add()([real, keras.layers.Mult
def random_weighted_average(self, generated, real):
alpha = K.random_uniform(shape=K.shape(real))
diff = keras.layers.Subtract()([generated, real])
return keras.layers.Add()([real, keras.layers.Multiply()([alpha, diff])])
这就是它的用法。一旦我尝试创建鉴别器模型,它就会抛出错误
我的后端是TensorFlow。当我在最后一行中使用alpha时,我得到以下错误:
AttributeError:“Tensor”对象没有属性“\u keras\u history”
我尝试将alpha替换为real和generated,看看是否与后端张量有关,这样错误就消失了。那么是什么导致了这个问题呢?我需要一个形状为实或生成的随机均匀采样张量。使用后端函数的自定义操作需要包装在一个层上。如果您没有任何可训练权重(如您的情况),最简单的方法是使用Lambda层:
averaged_samples = self.random_weighted_average(
generated_samples_for_discriminator,
real_samples)
averaged_samples_out = self.discriminator(averaged_samples)
discriminator_model = Model(
inputs=[real_samples, generator_input_for_discriminator],
outputs=[
discriminator_output_from_real_samples,
discriminator_output_from_generator,
averaged_samples_out
])
def random_weighted_average(inputs):
generated, real = inputs
alpha = K.random_uniform(shape=K.shape(real))
diff = generated - real
return real + alpha * diff
averaged_samples = Lambda(random_weighted_average)([generated_for_discriminator, real_samples])