I need to create a matrix in TensorFlow to store some values. The trick is the matrix has to support dynamic shape.
I am trying to do the same I would do in numpy:
myVar = tf.Variable(tf.zeros((x,y), validate_shape=False)
where x=(?)
and y=2
. But this does not work because zeros does not support 'partially known TensorShape', so, How should I do this in TensorFlow?
First, remember that you can use the TensorFlow eye functionality to easily create a square identity matrix. We create a 5x5 identity matrix with a data type of float32 and assign it to the Python variable identity matrix. So we used tf. eye, give it a size of 5, and the data type is float32.
To make this easier, the variable constructor supports a trainable=<bool> parameter. tf. GradientTape watches trainable variables by default: with tf.
1) You could use tf.fill(dims, value=0.0)
which works with dynamic shapes.
2) You could use a placeholder for the variable dimension, like e.g.:
m = tf.placeholder(tf.int32, shape=[])
x = tf.zeros(shape=[m])
with tf.Session() as sess:
print(sess.run(x, feed_dict={m: 5}))
If you know the shape out of the session, this could help.
import tensorflow as tf
import numpy as np
v = tf.Variable([], validate_shape=False)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(v, feed_dict={v: np.zeros((3,4))}))
print(sess.run(v, feed_dict={v: np.zeros((2,2))}))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With