gpt4 book ai didi

machine-learning - tensorflow 中的optimizer.compute_gradient()和tf.gradients()有什么区别?

转载 作者:行者123 更新时间:2023-11-30 08:26:33 25 4
gpt4 key购买 nike

我编写的以下代码在self.optimizer.compute_gradients(self.output,all_variables)处失败

import tensorflow as tf
import tensorlayer as tl
from tensorflow.python.framework import ops
import numpy as np

class Network1():


def __init__(self):
ops.reset_default_graph()
tl.layers.clear_layers_name()

self.sess = tf.Session()
self.optimizer = tf.train.AdamOptimizer(learning_rate=0.1)

self.input_x = tf.placeholder(tf.float32, shape=[None, 784],name="input")

input_layer = tl.layers.InputLayer(self.input_x)

relu1 = tl.layers.DenseLayer(input_layer, n_units=800, act = tf.nn.relu, name="relu1")
relu2 = tl.layers.DenseLayer(relu1, n_units=500, act = tf.nn.relu, name="relu2")

self.output = relu2.all_layers[-1]
all_variables = relu2.all_layers

self.gradient = self.optimizer.compute_gradients(self.output,all_variables)

init_op = tf.initialize_all_variables()
self.sess.run(init_op)

有警告,

TypeError: Argument is not a tf.Variable: Tensor("relu1/Relu:0", shape=(?, 800), dtype=float32)

但是,当我将该行更改为 tf.gradients(self.output,all_variables) 时,代码工作正常,至少没有报告警告。我错过了什么,因为我认为这两个方法实际上执行的是同一件事,即返回(梯度,变量)对的列表。

最佳答案

optimizer.compute_gradients 包装 tf.gradients() ,如您所见here 。它执行额外的断言(这解释了您的错误)。

关于machine-learning - tensorflow 中的optimizer.compute_gradient()和tf.gradients()有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40539938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com