tensorflow: Shapes and Shaping 探究

定义

Tensor Transformations - Shapes and Shaping: TensorFlow provides several operations that you can use to determine the shape of a tensor and change the shape of a tensor.

tensorflow提供了一些操作,让用户可以定义和修改tensor的形状


常用API

tf.shape

  以tensor形式,返回tensor形状。

tf.shape(input, name=None, out_type=tf.int32)

import tensorflow as tf

t = tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]], dtype=tf.int32)
with tf.Session() as sess:
    print (sess.run(tf.shape(t)))
[2 2 3]

  另一种方法也可以的到类似答案:

import tensorflow as tf

t = tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]], dtype=tf.int32)
print (t.shape)
(2, 2, 3)

tf.size

  以tensor形式,返回tensor元素总数。

tf.size(input, name=None, out_type=tf.int32)

import tensorflow as tf

t = tf.ones(shape=[2, 5, 10], dtype=tf.int32)

with tf.Session() as sess:
    print (sess.run(tf.size(t)))
100

tf.rank

  以tensor形式,返回tensor阶数。

tf.rank(input, name=None)

import tensorflow as tf

t = tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]], dtype=tf.int32)
with tf.Session() as sess:
    print (sess.run(tf.rank(t)))
3

tf.reshape

  以tensor形式,返回重新被塑形的tensor。

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

import tensorflow as tf

t = tf.constant(value=[1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=tf.int32)
with tf.Session() as sess:
    print (sess.run(t))
    print
    print (sess.run(tf.reshape(t, [3, 3])))
[1 2 3 4 5 6 7 8 9]

[[1 2 3]
 [4 5 6]
 [7 8 9]]

tf.squeeze

  以tensor形式,返回移除指定维后的tensor。

tf.squeeze(input, axis=None, name=None, squeeze_dims=None)

  • axis=None 时: Removes dimensions of size 1 from the shape of a tensor. 将tensor中 维度为1所有维 全部移除
  • axis=[2, 4] 时: 将tensor中 维度为1第2维第4维 移除
import tensorflow as tf

t = tf.ones(shape=[1, 2, 1, 3, 1, 1], dtype=tf.int32)

with tf.Session() as sess:
    print (sess.run(tf.shape(t)))
    print
    print (sess.run(tf.shape(tf.squeeze(t))))
    print
    print (sess.run(tf.shape(tf.squeeze(t, axis=[2, 4]))))
[1 2 1 3 1 1]

[2 3]

[1 2 3 1]

tf.expand_dims

  以tensor形式,返回插入指定维后的tensor。

tf.expand_dims(input, axis=None, name=None, dim=None)

import tensorflow as tf

t = tf.ones(shape=[2, 3, 5], dtype=tf.int32)

with tf.Session() as sess:
    print (sess.run(tf.shape(t)))
    print
    print (sess.run(tf.shape(tf.expand_dims(t, 0))))
    print
    print (sess.run(tf.shape(tf.expand_dims(t, 1))))
    print
    print (sess.run(tf.shape(tf.expand_dims(t, 2))))
    print
    print (sess.run(tf.shape(tf.expand_dims(t, 3))))
    print
    print (sess.run(tf.shape(tf.expand_dims(t, -1))))
[2 3 5]

[1 2 3 5]

[2 1 3 5]

[2 3 1 5]

[2 3 5 1]

[2 3 5 1]


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SeanCheney的专栏

《利用Python进行数据分析·第2版》 附录A NumPy高级应用A.1 ndarray对象的内部机理A.2 高级数组操作A.3 广播A.4 ufunc高级应用A.5 结构化和记录式数组A.6 更多

在这篇附录中,我会深入NumPy库的数组计算。这会包括ndarray更内部的细节,和更高级的数组操作和算法。 这章包括了一些杂乱的章节,不需要仔细研究。 A.1...

6526
来自专栏lhyt前端之路

js版本的(广、深)度优先搜索0. 前言1.队列、栈2.BFS1.1 矩阵形式的图的遍历1.2 树的BFS举例3.DFS

广度优先搜索(BFS)和深度优先搜索(DFS),大家可能在oj上见过,各种求路径、最短路径、最优方法、组合等等。于是,我们不妨动手试一下js版本怎么玩。

1142
来自专栏云霄雨霁

排序----选择排序

1600
来自专栏企鹅号快讯

Python算法分享系列-查找,排序,递归

iTesting,爱测试,爱分享 沉寂了一段时间,继续学习。 算法这个系列我想分享很久了,奈何本身对算法不是特别了解,又找不到合适的载体来分享。 最近看了本有趣...

4306
来自专栏小詹同学

Leetcode打卡 | No.24 两两交换链表中的节点

欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

1084
来自专栏.NET技术

UML类图

  这几天回顾了《大话设计模式》,发现看类图的时候分不清了,为了加强记忆,也方便回顾,自己手动画了一次类图,并参考了网上文章将此作为笔记,记录下来。

1514
来自专栏小詹同学

Leetcode打卡 | No.22 括号生成

欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

1951
来自专栏云霄雨霁

查找----基于散列表(线性探测法)

4410
来自专栏用户画像

C语言测试题

2. 假设已指定i为整型变量,f为float变量,d为double型变量,e为long型,有下面式子:

1525
来自专栏邵靖的专栏

Python 字符串子串定位性能比较

本文想探讨的是在给定了key字段在字段列表中开始下标和key字段个数后,如何在整行字符串中定位到key字符串的起始位置。

7611

扫码关注云+社区