Tensorflow keras多项式特征层
我想要创建多项式特征乘以X.T*X的图层:Tensorflow keras多项式特征层,tensorflow,machine-learning,keras,keras-layer,Tensorflow,Machine Learning,Keras,Keras Layer,我想要创建多项式特征乘以X.T*X的图层: class QuadraticLayer(Layer): def __init__(self, **kwargs): super(QuadraticLayer, self).__init__(**kwargs) def build(self, input_shape): assert isinstance(input_shape, tuple) print(input_shape) self.in_shape = i
class QuadraticLayer(Layer):
def __init__(self, **kwargs):
super(QuadraticLayer, self).__init__(**kwargs)
def build(self, input_shape):
assert isinstance(input_shape, tuple)
print(input_shape)
self.in_shape = input_shape[1]
self.out_shape = input_shape[1] ** 2
super(QuadraticLayer, self).build(input_shape) # Be sure to call this at the end
def call(self, x):
print(x.shape)
tf.reshape(x, (self.in_shape, 1, -1), name=None)
x = tf.matmul(x, x, transpose_a=True)
return tf.reshape(x, (-1, self.out_shape))
def compute_output_shape(self, input_shape):
return (None, self.out_shape)
我的问题是,在call
tensorx
中,是一个批量张量-如何编写每个训练示例都能工作的层,而不是整个批量张量?这是一个想法:
def call(self, x):
x = K.backend.batch_dot(tf.reshape(x, (-1, 1, self.in_shape)), tf.reshape(x, (-1, self.in_shape, 1)), axes=[1,2])
return tf.reshape(x, (-1, self.out_shape))
但问题是有更好的解决方案吗