我正在尝试将Keras模型与Lasagne层相结合。我在Lasagne层调用此函数:
def get_output_for(self, inputs, deterministic=False):
self.p = self.nonlinearity(T.dot(inputs[1], self.pi))
self.mask = sample_mask(self.p)
if deterministic or T.mean(self.p) == 0:
return self.p*inputs[0]
else:
return inputs[0]*self.mask问题是我的inputs对象是前一个Keras层的输出,它是一个Tesnor对象,因为Keras层产生Tensor输出。这不起作用。我不确定inputs应该具有什么类型,也不知道如何在Tensor和此函数期望的类型之间进行转换。
发布于 2018-05-10 22:07:44
我认为混合Lasagne和Keras/Tensorflow对象并不是最好的。相反,您可以将get_output_for方法转换为Tensorflow。在下面的内容中,我假设非线性类似于
self.nonlinearity = lambda x: tf.maximum(x, 0)输入是一个类似numpy.array的对象:
def tf_get_output_for(self, inputs, deterministic=False):
self.p = self.nonlinearity(tf.matmul(inputs[1], self.pi))
self.mask = sample_mask(self.p)
if deterministic or tf.reduce_mean(self.p) == 0:
return self.p * inputs[0]
else:
return inputs[0] * self.mask 方法sample_mask必须转换为"Tensorflow兼容“
https://stackoverflow.com/questions/49136981
复制相似问题