Поэтому я пытаюсь постоянно обновлять тензор в моем коде в цикле, присваивая ему новое значение в каждой итерации.Функция genRandMat назначает переменную a1 со случайной MxN матрицей , содержащей 0 и 1 с частотой 1, определяемой с вероятностью pt .
Здесьэто код, который я запустил -
np.random.seed(0)
tf.set_random_seed(0)
def genRandMat(M,N,pt):
return tf.convert_to_tensor(np.random.choice([0, 1], size=(M,N), p=[1-pt, pt]), dtype=tf.float32)
a1=tf.Variable(genRandMat(1,10,0.5))
a2=a1.assign(genRandMat(1,10,0.5))
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(5):
print(a1.eval())
sess.run(a2)
print(a1.eval())
print("*************")
Результат, который я ожидал, был новым случайным тензором после каждого второго оператора печати (из-за оператора обновления a2), то есть 2-я, 4-я, 6-я ... матрицы должны быть обновленыновые случайные матрицы.
Вот что я получил вместо
[[0. 0. 1. 1. 0. 0. 1. 1. 1. 0.]]
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
*************
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
*************
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
*************
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
*************
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
[[1. 1. 1. 1. 0. 1. 0. 0. 1. 1.]]
*************
Как вы можете видеть, значение a1 изменяется один раз в начале со вторым оператором печати, а затем уже нет.Я попытался закомментировать оба случайных семени, но результат не изменился.Я хочу новую матрицу после каждого обновления.Как мне этого добиться?