在Keras和Lasagne之间转换

时间:2018-03-06 17:45:53

标签: tensorflow deep-learning keras lasagne

我正在尝试将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应该具有什么类型或如何在$(".homebranch").each(function() { $(this).html($(".location", this)); });和此函数所期望的类型之间进行转换。

1 个答案:

答案 0 :(得分:0)

我认为混合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 compatible”