TensorFlow的reshape操作 tf.reshape的实现

作者:Ai_践行者 时间:2022-03-31 01:14:13 

初学tensorflow,如果写的不对的,请更正,谢谢!


tf.reshape(tensor, shape, name=None)

函数的作用是将tensor变换为参数shape的形式。

其中shape为一个列表形式,特殊的一点是列表中可以存在-1。-1代表的含义是不用我们自己指定这一维的大小,函数会自动计算,但列表中只能存在一个-1。(当然如果存在多个-1,就是一个存在多解的方程了)

好了我想说的重点还有一个就是根据shape如何变换矩阵。其实简单的想就是,

reshape(t, shape) => reshape(t, [-1]) => reshape(t, shape)

首先将矩阵t变为一维矩阵,然后再对矩阵的形式更改就可以了。

官方的例子:


# tensor 't' is [1, 2, 3, 4, 5, 6, 7, 8, 9]
# tensor 't' has shape [9]
reshape(t, [3, 3]) ==> [[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]]

# tensor 't' is [[[1, 1], [2, 2]],
#        [[3, 3], [4, 4]]]
# tensor 't' has shape [2, 2, 2]
reshape(t, [2, 4]) ==> [[1, 1, 2, 2],
           [3, 3, 4, 4]]

# tensor 't' is [[[1, 1, 1],
#         [2, 2, 2]],
#        [[3, 3, 3],
#         [4, 4, 4]],
#        [[5, 5, 5],
#         [6, 6, 6]]]
# tensor 't' has shape [3, 2, 3]
# pass '[-1]' to flatten 't'
reshape(t, [-1]) ==> [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6]

# -1 can also be used to infer the shape

# -1 is inferred to be 9:
reshape(t, [2, -1]) ==> [[1, 1, 1, 2, 2, 2, 3, 3, 3],
            [4, 4, 4, 5, 5, 5, 6, 6, 6]]
# -1 is inferred to be 2:
reshape(t, [-1, 9]) ==> [[1, 1, 1, 2, 2, 2, 3, 3, 3],
            [4, 4, 4, 5, 5, 5, 6, 6, 6]]
# -1 is inferred to be 3:
reshape(t, [ 2, -1, 3]) ==> [[[1, 1, 1],
              [2, 2, 2],
              [3, 3, 3]],
              [[4, 4, 4],
              [5, 5, 5],
              [6, 6, 6]]]

# tensor 't' is [7]
# shape `[]` reshapes to a scalar
reshape(t, []) ==> 7

在举几个例子或许就清楚了,有一个数组z,它的shape属性是(4, 4)


z = np.array([[1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]])
z.shape
(4, 4)

z.reshape(-1)


z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])

z.reshape(-1, 1)
也就是说,先前我们不知道z的shape属性是多少,但是想让z变成只有一列,行数不知道多少,通过`z.reshape(-1,1)`,Numpy自动计算出有12行,新的数组shape属性为(16, 1),与原来的(4, 4)配套。


z.reshape(-1,1)
array([[ 1],
   [ 2],
   [ 3],
   [ 4],
   [ 5],
   [ 6],
   [ 7],
   [ 8],
   [ 9],
   [10],
   [11],
   [12],
   [13],
   [14],
   [15],
   [16]])

z.reshape(-1, 2)

newshape等于-1,列数等于2,行数未知,reshape后的shape等于(8, 2)


z.reshape(-1, 2)
array([[ 1, 2],
   [ 3, 4],
   [ 5, 6],
   [ 7, 8],
   [ 9, 10],
   [11, 12],
   [13, 14],
   [15, 16]])

来源:https://blog.csdn.net/qq_41424519/article/details/81778984

标签:TensorFlow,reshape,tf.reshape
0
投稿

猜你喜欢

  • JavaScript数据库TaffyDB用法实例分析

    2024-01-25 01:16:25
  • Mysql使用Describe命令判断字段是否存在

    2011-04-25 18:27:00
  • 深入浅析Python获取对象信息的函数type()、isinstance()、dir()

    2021-12-23 11:46:11
  • Python入门学习之字符串与比较运算符

    2023-10-14 22:09:40
  • window环境配置Mysql 5.7.21 windowx64.zip免安装版教程详解

    2024-01-24 01:19:00
  • python列表中常见的一些排序方法

    2023-08-17 08:48:45
  • 使用IDLE的Python shell窗口实例详解

    2021-04-15 16:49:09
  • Python Celery异步任务队列使用方法解析

    2023-05-18 02:34:53
  • 推荐技术人员一款Python开源库(造数据神器)

    2023-11-10 19:57:45
  • IE8的一些CSS hack

    2008-03-17 13:08:00
  • 几行Python代码爬取3000+上市公司的信息

    2022-11-17 22:04:09
  • 打造“前端开发”程序员专用版EditPlus

    2009-01-05 13:04:00
  • Python jieba结巴分词原理及用法解析

    2023-08-29 17:43:36
  • Python素数检测实例分析

    2021-05-22 02:11:41
  • Python 读取串口数据,动态绘图的示例

    2021-11-15 19:36:24
  • 省市县三级联动的SQL语句

    2024-01-12 14:51:52
  • JSONLINT:python的json数据验证库实例解析

    2022-08-13 21:53:01
  • Python中的异常处理讲解

    2023-01-29 11:22:57
  • 使用MYSQL TIMESTAMP字段进行时间加减运算问题

    2024-01-13 12:24:29
  • python 密码加密与解密的实现

    2023-07-31 04:32:38
  • asp之家 网络编程 m.aspxhome.com