首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow如何知道在minimize()中使用哪个导数函数?

Tensorflow如何知道在minimize()中使用哪个导数函数?
EN

Stack Overflow用户
提问于 2017-09-25 16:37:11
回答 2查看 530关注 0票数 0
代码语言:javascript
复制
model9 = tf.nn.relu(tf.matmul(x1,w9)+b)
model10 = tf.nn.sigmoid(tf.matmul(model9,w10)+b)

error = tf.reduce_mean(tf.square(model10-y))
train = tf.train.AdamOptimizer(learning_rate=0.001).minimize(error)
  1. tensorflow真的如此聪明吗?它会“迭代”所有层,检查激活函数,并根据激活函数导数应用梯度体面吗?
  2. 如果我认为模型9的学习率应该是0.01呢?那么我怎样在网络上配置那个呢?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-25 17:08:30

是的,您的代码正在构造一个由表示操作和变量的节点组成的TensorFlow计算图。由于TensorFlow知道每个操作的梯度(即操作输出相对于每个输入的梯度),它可以使用反向传播算法在梯度下降过程中更新变量,并在此过程中为每个激活函数应用正确的导数。参见对反向传播的出色解释:notes/notes3.pdf

对于对每个层使用不同的学习速率,这不是那么简单,但是您可以通过将最小化调用拆分为它的两个组成部分: compute_gradients和apply_gradients,然后修改梯度来有效地改变您的学习速度。就像这样:

代码语言:javascript
复制
model9 = tf.nn.relu(tf.matmul(x1,w9)+b)
model10 = tf.nn.sigmoid(tf.matmul(model9,w10)+b)
error = tf.reduce_mean(tf.square(model10-y))

optimiser = tf.train.AdamOptimizer(learning_rate=0.001)    
gradients = optimiser.compute_gradients(error, [w9, w10]) # Compute the gradients of error with respect to w9 and w10

# gradients is a list of tuples [(gradient, variable)]
gradients[0][0] *= 10  # Multiply the gradient of w9 by 10 to increase the learning rate
train = optimiser.apply_gradients(gradients)  # New train op
票数 1
EN

Stack Overflow用户

发布于 2017-09-25 16:52:22

tensorflow真的如此聪明吗?它会“迭代”所有层,检查激活函数,并根据激活函数导数应用梯度体面吗?

是。这就是使用Tensorflow的意义所在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46410078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档