这里是我自己的图层代码,模型可以编译和预测很好,但是当我使用模型方法model.fit(x,y)时,它会出现关于无张量误差的错误,我找不到原因
class CenterPointClassifierLayer(Layer):
def __init__(self, c, **kwargs):
self.c = c
super(CenterPointClassifierLayer, self).__init__(**kwargs)
def build(self, input_shape):
# check input_shape
if len(input_shape) != 2:
raise 'input should be in 1 dimension'
self.kernel = self.add_weight(name='kernel',
shape=(self.c, input_shape[1]),
initializer='uniform',
trainable=True)
self.one = K.constant(np.ones((self.c, 1)))
super(CenterPointClassifierLayer, self).build(input_shape)
def call(self, x):
def elem_op(pre, x_input):
x_shape = K.int_shape(x_input)
e = K.reshape(x_input, (1, x_shape[0]))
_x = K.dot(self.one, e)
del_x = K.square(tf.subtract(self.kernel, _x))
distance = K.sum(del_x, axis=1)
_c = K.argmin(distance)
_class = K.one_hot(_c, self.c)
return _class
y_pred = tf.scan(elem_op, x, initializer=K.one_hot(1, self.c))
return y_pred
def compute_output_shape(self, input_shape):
out_shape = (input_shape[0], self.c)
return out_shape
这是使用fit方法时得到的错误:
文件“\ tensorflow \ python \ ops \ math_ops.py”,第412行,方形 return gen_math_ops.square(x,name = name)
文件“\ tensorflow \ python \ ops \ gen_math_ops.py”,第2585行,方块 result = _op_def_lib.apply_op(“Square”,x = x,name = name)
文件“\ tensorflow \ python \ framework \ op_def_library.py”,第509行,在apply_op中 (input_name,err))
ValueError:尝试将'x'转换为张量并失败。错误:不支持任何值。
请帮助,我怎样才能在适合时修复错误! 我不知道x来自哪里,得到了无值,以及为什么在tf中有一个正方形运算