每次迭代后,代码速度较慢,并且不会给出预期的输出



我需要为 3 个相同的神经网络(架构相同,而不是参数相同(执行以下任务 - A,B,C

  1. 将 C 的权重更新为 A 和 B 的函数

  2. 火车 C

  3. 根据新的(训练的 C 权重(更新 A,B 的权重

  4. 更新屏蔽数组的值

我对 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

这没有给出预期的结果,表明操作没有按照我希望的顺序运行。如何达到预期的效果?欢迎任何建议。

由于您尚未共享所有代码,因此很难思考到底出了什么问题,但您可能需要检查以下几点。

  1. 确保你的genRandMat函数在每次迭代后都会生成一个新的随机矩阵。请记住,如果它使用 numpy 或其他 API 而不是 Tensorflow,那么它可能不会做你期望的事情。尝试查看 tf。Variable.load(( 如果您确实使用其他 API 来实现此目的。

  2. 要按顺序运行操作,您可以考虑研究张量流的 Eager Execution 模式,尽管我自己在这方面的经验有限,但我不推荐它。

希望这有帮助。

最新更新