我需要为 3 个相同的神经网络(架构相同,而不是参数相同(执行以下任务 - A,B,C
-
将 C 的权重更新为 A 和 B 的函数
-
火车 C
-
根据新的(训练的 C 权重(更新 A,B 的权重
-
更新屏蔽数组的值
我对 Tensorflow 很陌生,不知道如何按顺序执行这些操作。这是我想出的代码
#Step 3
ass=(W1a.assign((W1c* trans_arr1)+(W1a*(tf.ones([784, L]-trans_arr1)))))
#Step 1
a1=W1c.assign((W1a*trans_arr1)+(W1b*(tf.ones([784, L])-trans_arr1))))
#Step 4
trans_arr1 = genRandMat(784,L,ptrans)
#Loop
for i in range((400)+1):
#Train C
training_step(i, i % 100 == 0, i % 20 == 0)
# Update weights of A,B based on new weights of C
sess.run([ass])
#Update masking array
sess.run([trans_arr1])
#update C based on A,B
sess.run([a1])
注意 - trans_arr是具有 1 和 0 的掩蔽矩阵,1 在每个位置都存在概率 ptrans
这没有给出预期的结果,表明操作没有按照我希望的顺序运行。如何达到预期的效果?欢迎任何建议。
由于您尚未共享所有代码,因此很难思考到底出了什么问题,但您可能需要检查以下几点。
-
确保你的genRandMat函数在每次迭代后都会生成一个新的随机矩阵。请记住,如果它使用 numpy 或其他 API 而不是 Tensorflow,那么它可能不会做你期望的事情。尝试查看 tf。Variable.load(( 如果您确实使用其他 API 来实现此目的。
-
要按顺序运行操作,您可以考虑研究张量流的 Eager Execution 模式,尽管我自己在这方面的经验有限,但我不推荐它。
希望这有帮助。