你可以这样做tf.reshape()
:
x = tf.placeholder(tf.float32, [None, 10])
v = tf.Variable(tf.ones_like(x), trainable=False, validate_shape=False)
#tf.layers.dense(v, 10)
tf.layers.dense(tf.reshape(v,[-1,10]),10)
哪里的-1
允许返回张量具有形状(?,10)
;即上面的输出是:
<tf.Tensor 'dense_10/BiasAdd:0' shape=(?, 10) dtype=float32>
这就是你想要的。您可以通过使用已知的形状和切换来验证正确的行为validate_shape
,如:
x = tf.placeholder(tf.float32, [5, 10])
v = tf.Variable(tf.ones_like(x), trainable=False, validate_shape=True)
tf.layers.dense(v, 10)
...返回结果与:
x = tf.placeholder(tf.float32, [5, 10])
v = tf.Variable(tf.ones_like(x), trainable=False, validate_shape=False)
tf.layers.dense(tf.reshape(v,[5,10]),10)
# returns <tf.Tensor 'dense_8/BiasAdd:0' shape=(5, 10) dtype=float32>