将与输入张量相同形状的参数张量添加到自定义图层

时间:2019-05-17 18:03:14

标签: python tensorflow keras

我正在构建一个自定义Keras图层,尝试在该图层中添加与输入张量相同形状的可训练参数矢量。但是,我无法弄清楚在没有类型转换错误的情况下如何做到这一点。

我尝试使用input_shape图层参数作为参数张量的形状。

这是我的图层的样子:

from keras import backend as K
from keras.layers import Layer

class MyEstLayer(Layer):

    def __init__(self, output_dim, **kwargs):
        self.output_dim = output_dim
        super(MyEstLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        # Create a trainable weight variable for this layer.
        self.zeros = self.add_weight(name='zeros', 
                                      shape=(input_shape[1], self.output_dim),
                                      initializer='Zeros',
                                      trainable=False)
        self.output_estimate = self.add_weight(name='output_estimate',
                                     shape=(self.output_dim,),
                                     initializer='uniform',
                                     trainable=True)
        self.input_estimate = self.input_estimate = self.add_weight(name='input_estimate',
                                     shape = input_shape,
                                     initializer='uniform',
                                     trainable=True)
        super(MyEstLayer, self).build(input_shape)  # Be sure to call this at the end

    def call(self, x):
        return keras.activations.relu(K.bias_add(K.dot(self.input_estimate, self.zeros), self.output_estimate))
    def compute_output_shape(self, input_shape):
        return (input_shape[0], self.output_dim)

这是我的模型的样子

input_tensor = layers.Input(shape=(784,))
input_mid = layers.Input(shape=(10,))
layer1est = MyEstLayer(10,)(input_tensor)
layer2est = MyEstLayer(10,)(input_mid)
outputest = MyEstOutput(10,)(input_mid)

这是我尝试在上面运行时收到的错误:

  

TypeError:无法将类型的对象转换为Tensor。   内容:(无,784)。考虑将元素强制转换为受支持的类型。

0 个答案:

没有答案