我正在构建一个自定义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)。考虑将元素强制转换为受支持的类型。