我对以下代码片段有疑问,obs_pattern
,obs_seq
和obs_seq_s
不会产生预期的行为。我试过TensorFlow 1.2.1。我怀疑有什么不对劲。
import tensorflow as tf
sess = tf.InteractiveSession()
seq_length = 5
num_bits = 4
obs_pattern_shape = [num_bits, seq_length]
obs_pattern = tf.cast(
tf.random_uniform(obs_pattern_shape, minval=0, maxval=2, seed=1234, dtype=tf.int32),
tf.float32)
print(obs_pattern.eval())
seq_length_zeros = tf.zeros([1, seq_length])
obs_seq = tf.concat([obs_pattern, seq_length_zeros], axis=0)
print(obs_seq.eval())
add_vec = tf.one_hot([num_bits], (num_bits + 1), on_value = 1.0, off_value=0.0, axis=0)
obs_seq_s = tf.concat([obs_seq, add_vec], axis=1)
print(obs_seq_s.eval())
sess.close()
obs_pattern
[[ 1. 1. 1. 0. 0.]
[ 0. 0. 0. 1. 0.]
[ 0. 1. 1. 0. 0.]
[ 0. 1. 0. 0. 0.]]
obs_seq
[[ 1. 1. 0. 1. 1.]
[ 0. 1. 1. 0. 1.]
[ 1. 1. 1. 0. 0.]
[ 1. 1. 0. 1. 0.]
[ 0. 0. 0. 0. 0.]]
obs_seq_s
[[ 1. 0. 0. 0. 0. 0.]
[ 0. 0. 1. 0. 0. 0.]
[ 0. 1. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 1.]]
修改 根据下面的评论我改变了obs_pattern,它的行为和我想的一样
import numpy as np
arr = np.random.randint(2, size=(num_bits, seq_length))
obs_pattern = tf.convert_to_tensor(arr, dtype=tf.float32)
答案 0 :(得分:0)
预计每次在用obs_pattern形成的张量上运行sess时,它会重新运行一个新的随机统一。 为了获得您期望的行为,生成 ONCE 一个numpy的numpy数组,然后将其提供给相同形状的占位符:obs_pattern。 为了澄清您使用种子但,您运行了多次操作,以便获得序列的第一次迭代。