没有合适的资源?快使用搜索试试~ 我知道了~
numpy 中的高维数组可以使用其自带的 flatten 函数转化成 1 维数组。 在优化问题的梯度下降求解过程中,把高维的梯度变成 1 维数组是很重要的,方便求自适应步长。 把张量拉平容易,怎么把它复原到原来的维度呢? 这自然想到把原本的张量维度保存下来,下面介绍这个小技巧: from functools import partial def flatten(x): original_shape = x.shape return x.flatten(), partial(np.reshape, newshape=original_shape) 上面这个 flatten 函数
资源推荐
资源详情
资源评论
numpy 张量拉平与恢复张量拉平与恢复
numpy 中的高维数组可以使用其自带的 flatten 函数转化成 1 维数组。
在优化问题的梯度下降求解过程中,把高维的梯度变成 1 维数组是很重要的,方便求自适应步长。
把张量拉平容易,怎么把它复原到原来的维度呢?
这自然想到把原本的张量维度保存下来,下面介绍这个小技巧:
from functools import partial
def flatten(x):
original_shape = x.shape
return x.flatten(), partial(np.reshape, newshape=original_shape)
上面这个 flatten 函数有两个返回值,一个是拉平后的 1 维数组,第二个是恢复原来形状的函数,举个例子:
>>> a = np.random.random((2,3))
>>> a
array([[0.1911062 , 0.17940551, 0.93155731],
[0.06759109, 0.12956553, 0.86589604]])
>>> a_, unflatten = flatten(a)
>>> a_
array([0.1911062 , 0.17940551, 0.93155731, 0.06759109, 0.12956553, 0.86589604])
>>> unflatten
functools.partial(, newshape=(2, 3))
>>> unflatten(a_)
array([[0.1911062 , 0.17940551, 0.93155731],
[0.06759109, 0.12956553, 0.86589604]])
这个例子应该非常直观吧!!
这里用到了 python 函数库中的 partial,
partial 的第一个参数为函数名,其它参数为默认填补的参数。
这里把数组原来的形状告诉 np.reshape,就可以实现形状还原啦。
资源评论
weixin_38595356
- 粉丝: 9
- 资源: 940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功