首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用自微分功能计算向量相对于向量的导数

如何使用自微分功能计算向量相对于向量的导数
EN

Stack Overflow用户
提问于 2019-05-09 01:34:59
回答 1查看 27关注 0票数 0

我使用的是张量流。问题是:

我有一个向量x= (x_0,x_1)和一个映射:y= x_0+x_1,x_0-x_1。

我想使用张量流的自微分特性来计算dy/dx的导数。我如何才能做到这一点?

我搜索了张量流教程,它只给了我一个例子来计算以下问题的梯度:

Y= x_0^2 + x_1^2。

没有示例说明如何计算向量对向量的导数。

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 02:41:55

tf.gradientsdocumentation说:

代码语言:javascript
运行
复制
tf.gradients(
    ys,
    xs,
    ...
)
ys: A Tensor or list of tensors to be differentiated.
xs: A Tensor or list of tensors to be used for differentiation.

下面是你想做的事情:

代码语言:javascript
运行
复制
x = tf.get_variable("x", 
                    [2, 5],
                    initializer=tf.truncated_normal_initializer(stddev=0.02))
x_0 = x[0]
x_1 = x[1]

y_0 = x_0 + x_1
y_1 = x_0 - 2*x_1

y = tf.concat([[y_0], [y_1]], axis=0)

grad = tf.gradients(ys=y, xs=[x_0, x_1], unconnected_gradients='zero')

with tf.Session() as s:
  s.run(tf.initialize_all_variables())

  x0, x1, x, y, grad = s.run([x_0, x_1, x, y, grad])
  print 'x0=\n', x0, '\nx1=\n', x1
  print 'x=\n', x
  print 'y=\n', y
  print 'grad=\n', grad

结果:

代码语言:javascript
运行
复制
x0=
[-0.02764007  0.01410516  0.02441488  0.02322472  0.03130293] 
x1=
[-0.00922771  0.0021055  -0.00121181  0.00638576  0.01953333]
x=
[[-0.02764007  0.01410516  0.02441488  0.02322472  0.03130293]
 [-0.00922771  0.0021055  -0.00121181  0.00638576  0.01953333]]
y=
[[-0.03686778  0.01621066  0.02320307  0.02961049  0.05083626]
 [-0.00918464  0.00989417  0.0268385   0.0104532  -0.00776374]]
grad=
  [array([ 2.,  2.,  2.,  2.,  2.], dtype=float32), 
   array([-1., -1., -1., -1., -1.], dtype=float32)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56046236

复制
相关文章

相似问题

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