Keras:跳过非连续层之间的连接

时间:2019-09-20 10:07:43

标签: tensorflow machine-learning keras resnet

我想实现一个Keras包装器,该包装器可以修改一层以使ResNet正常进展

x_{k+1} = x_k + f(x_k)

其中f是一层将变为

x_{k+1} = g(x_{k-1}) + x_k + f(x_k)

对于通常的ResNet进度,我知道该怎么做。它将类似于:

class Residual(Wrapper):

    def call(self, x):
        layer_output = self.layer.call(x)
        output = tf.math.add(x, layer_output)
        return output

但是,不仅需要x_{k-1}的输出,还需要前一层的输出。我不确定执行此操作的正确方法是什么。残余包装将被这样称呼:

layer_2 = Residual(Dense(28**2,input_shape=input_shape))(layer_1)

对于其他称为Residual2的包装器,我尝试过:

layer_2 = Residual2(Dense(28**2,input_shape=input_shape))([layer_1,layer_0])

我收到以下异常;

  

ValueError:图层laplace期望有1个输入,但接收到2个输入张量。收到的输入:[<tf.Tensor 'dense/BiasAdd:0' shape=(?, 784) dtype=float32>, <tf.Tensor 'dense/BiasAdd:0' shape=(?, 784) dtype=float32>]

我厌倦了调试原始keras代码的调试工作,但是我不是一个经验丰富的程序员,因此这确实是一个领先的地方。看来,我不知道如何正确设置包装机的输入尺寸。有人可以解释如何正确执行此操作吗?

感谢您的时间

0 个答案:

没有答案