我想用TensorFlow解这个方程(4X+2=0),关于这个代码我有两个问题:
import tensorflow as tf
x = tf.Variable(0.0)
for i in range(10000):
with tf.GradientTape() as tape:
y = 4 * x + 2
loss = tf.square(y)
gradient=tape.gradient(loss,[x])
tf.optimizers.SGD(learning_rate=0.01).apply_gradients(zip(gradient,[x]))
print(x.numpy())
我的第一个问题是:
为什么如果我在for循环之外声明等式及其损失函数,会导致错误
y = 4 * x + 2
loss = tf.square(y)
我的意思是每次迭代这些变量都会在内存中启动一个新地址,所以我想把它们放在for循环之外
第二个问题是:
为什么我要使成本函数(4X+2)^2,然后我再次微分方程
关于StackOverflow,最好在帖子中只问一个问题。在这个回答中,我将看一下你的第一个问题。对于第二个问题,请随意提问。一旦您编辑了您的问题,我将编辑此答案并删除该部分
自TF2以来,tensorflow的默认设计是渴望执行。这意味着使用tensorflow进行编码与使用本机python进行开发的方式非常接近。 如果我们用本机python编写此tensorflow代码,我们将有:
在本机python代码中,很清楚为什么我们必须在循环中重新计算
y
的值:在更改x
的值时,我们还需要更新y
的值!这种行为在TF抽象下有点隐藏,但我希望现在它更清晰一些我想你是在问关于循环的具体问题,但是你可以像这样声明函数
相关问题 更多 >
编程相关推荐