Python Tensorflow中深度Q网络损失函数的设计

Python Tensorflow中深度Q网络损失函数的设计,python,tensorflow,Python,Tensorflow,我正在研究我的第一个深度Q学习网络,在设计Tensorflow中的损失函数时遇到了困难。因为损失函数同时使用当前网络权重和以前过时的权重(参见第二个等式)。我认为只有两种方法可以做到这一点: 提前预测更新时过时网络的所有可能状态,然后使用这些值 使用tf.train.Saver()并在每个反向传播模型之间切换 在Tensorflow中是否有我遗漏的更适合这个的东西?您需要将过时的权重存储在不同的tf.变量中,以便以后使用它们。我无法访问您的任何代码,但我建议您运行两次模型构造,并使用一次作为简单

我正在研究我的第一个深度Q学习网络,在设计Tensorflow中的损失函数时遇到了困难。因为损失函数同时使用当前网络权重和以前过时的权重(参见第二个等式)。我认为只有两种方法可以做到这一点:

  • 提前预测更新时过时网络的所有可能状态,然后使用这些值
  • 使用
    tf.train.Saver()
    并在每个反向传播模型之间切换

  • 在Tensorflow中是否有我遗漏的更适合这个的东西?

    您需要将过时的权重存储在不同的tf.变量中,以便以后使用它们。我无法访问您的任何代码,但我建议您运行两次模型构造,并使用一次作为简单存储。另一个解决方案是使用每个变量中的两个修改当前图形,并创建到副本的连接

    也就是说,如果要创建TensorFlow变量a,并且希望将其以前的值存储为B,则可以执行以下操作:

    A = tf.Variable(5)
    B = tf.Variable(0)
    
    # Use A to do something
    A = A * 5
    # Store the value of A in B
    B = A
    
    with tf.Session() as sess:
        sess.run(B) # Store A in B
        sess.run(A) # Run an update on A
    
    print A, B
    

    您需要将过时的权重存储在不同的tf.变量中,以便以后使用。我无法访问您的任何代码,但我建议您运行两次模型构造,并使用一次作为简单存储。另一个解决方案是使用每个变量中的两个修改当前图形,并创建到副本的连接

    也就是说,如果要创建TensorFlow变量a,并且希望将其以前的值存储为B,则可以执行以下操作:

    A = tf.Variable(5)
    B = tf.Variable(0)
    
    # Use A to do something
    A = A * 5
    # Store the value of A in B
    B = A
    
    with tf.Session() as sess:
        sess.run(B) # Store A in B
        sess.run(A) # Run an update on A
    
    print A, B
    

    对于整个网络,有没有一种简单的方法可以做到这一点?您需要进入模型构建并复制每个操作。对于卷积
    conv
    创建
    conv\u prev
    。每个卷积都包含一组tf.Variable。你需要在每次迭代中复制它们,就像我在上面使用这种方法时所做的那样。那似乎不太可行。。我遗漏了什么吗?对于整个网络,有没有一种简单的方法可以做到这一点?您需要进入模型构建并复制每个操作。对于卷积
    conv
    创建
    conv\u prev
    。每个卷积都包含一组tf.Variable。你需要在每次迭代中复制它们,就像我在上面使用这种方法时所做的那样。那似乎不太可行。。我错过什么了吗?