Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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 AttributeError:“Tensor”对象在使用后端随机时没有属性“\u keras\u history”_Python_Tensorflow_Keras - Fatal编程技术网

Python AttributeError:“Tensor”对象在使用后端随机时没有属性“\u keras\u history”

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

我在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.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])