Tensorflow 此代码中的权重是如何更新的?
我正在阅读此代码,但无法理解权重是如何在其逻辑中更新的:Tensorflow 此代码中的权重是如何更新的?,tensorflow,logistic-regression,Tensorflow,Logistic Regression,我正在阅读此代码,但无法理解权重是如何在其逻辑中更新的: tf.enable_eager_execution() x = np.arange(0, 5, 0.1) y = x**3 - 4*x**2 - 2*x + 2 y_noise = y + np.random.normal(0, 1.5, size=(len(x),)) def get_batch(x, y, batch_size=20): idxs = np.random.randint(0, len(x), (batch_
tf.enable_eager_execution()
x = np.arange(0, 5, 0.1)
y = x**3 - 4*x**2 - 2*x + 2
y_noise = y + np.random.normal(0, 1.5, size=(len(x),))
def get_batch(x, y, batch_size=20):
idxs = np.random.randint(0, len(x), (batch_size))
return x[idxs], y[idxs]
class PolyModel(object):
def __init__(self):
self.w = tfe.Variable(tf.random_normal([4]))
def f(self, x):
return self.w[0] * x ** 3 + self.w[1] * x ** 2 + self.w[2] * x + self.w[3]
def loss(model, x, y):
err = model.f(x) - y
return tf.reduce_mean(tf.square(err))
model = PolyModel()
grad = tfe.implicit_gradients(loss)
optimizer = tf.train.AdamOptimizer()
iters = 20000
for i in range(iters):
x_batch, y_batch = get_batch(x, y)
optimizer.apply_gradients(grad(model, x_batch, y_batch))
if i % 1000 == 0:
print("Iteration {}, loss: {}".format(i+1, loss(model, x_batch, y_batch).numpy()))
这是因为在这一行中,权重在函数“apply_gradients”中隐式更新吗
tfe.隐式_梯度(损失)
是一个计算损失
相对于模型权重的梯度的函数<代码>优化器。应用梯度()。因此,在每次迭代时,模型权重都会更新。tfe。隐式梯度(损失)
是一个函数,用于计算损失相对于模型权重的梯度<代码>优化器。应用梯度()。因此,在每次迭代中,模型权重都会更新。grad(模型,x\u批次,y\u批次)-“grad”是一个函数吗?它应该是标量还是向量?调用它后,它是一个函数,返回的梯度是关于所有可训练变量的。因此,“tfe.implicit_gradients(loss)”返回函数“grad”,然后调用“grad(model,x_batch,y_batch)”?在我的PyCharm中,我无法检查隐式梯度的实现?它应该是标量还是向量?调用它后,它是一个函数,返回的梯度是关于所有可训练变量的。因此,“tfe.implicit_gradients(loss)”返回函数“grad”,然后调用“grad(model,x_batch,y_batch)”?在我的PyCharm中,我无法检查隐式_梯度的实现。
optimizer.apply_gradients(grad(model, x_batch, y_batch))