首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Keras (Tensorflow后端)-将MLP中的所有梯度平平为1级张量(即一维数组)。

Keras (Tensorflow后端)-将MLP中的所有梯度平平为1级张量(即一维数组)。
EN

Stack Overflow用户
提问于 2017-09-13 12:07:18
回答 1查看 536关注 0票数 1

假设以下Keras模型:

代码语言:javascript
运行
复制
model = Sequential()
model.add(Dense(512, activation='sigmoid', input_shape=(784,)))
model.add(Dense(10, activation='softmax'))

显然,我们可以通过以下方法来计算梯度:

代码语言:javascript
运行
复制
grads = K.gradients(loss, params)

它只是打电话:

代码语言:javascript
运行
复制
tf.gradients(loss, variables, colocate_gradients_with_ops=True)

这将返回,一个张量的列表,包含:

  1. 包含512x784个元素的张量(隐连接的输入梯度)
  2. 隐层中512个单元偏差梯度的张量
  3. 具有10x512元素的张量(隐到输出连接的梯度)
  4. 具有10个输出单元偏差梯度的张量

我想问一问,是否有一种简单的方法,用(512x784)+512+(10x512)+10元素“平平”一级张量(即一维数组)的所有梯度,而不对层和相应的偏差进行循环。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-13 13:19:10

是的,使用后端函数。

代码语言:javascript
运行
复制
#flatten the tensors
flattenedList = [K.flatten(x) for x in grads]

#concatenate them
concatenated = K.concatenate(flattenedList)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46197153

复制
相关文章

相似问题

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