Tensor是Tensorflow中重要的对象。下面是Tensor的常用方法,后面还会写一篇随笔记录Variable的用法。

  1. 生成一个(常)Tensor对象

>>>A = tf.constant(4)
>>>B = tf.constant([[1, 2], [3, 4]))
>>>A
<tf.Tensor: id=76, shape=(), dtype=int32, numpy=4>
>>>B
<tf.Tensor: id=77, shape=(2, 2), dtype=int32, numpy=
array([[1, 2],
[3, 4]], dtype=int32)>

  Tensor对象和ndarray对象看起来很像但也有差别,一个最大的差别是Tensor是不可变的(immutable)。这意味着你永远也无法随心所欲的对Tensor进行赋值,只能新创建一个新的Tensor。

  2. 和Ndarray的互相转换

>>>B.numpy()
array([[1, 2],
[3, 4]], dtype=int32)
>>>np.array(B)
array([[1, 2],
[3, 4]], dtype=int32)
>>>D = np.array([[1, 2], [3, 4]])
>>>tf.convert_to_tensor(D, dtype='int32')
<tf.Tensor: id=79, shape=(2, 2), dtype=int32, numpy=
array([[1, 2],
[3, 4]], dtype=int32)>

  Tensorflow2引入了叫做Eager execution的机制,让Tensor和ndarray具有一样的运算灵活性。除了以上的转换方式之外,任意的Tensorflow操作都可以生成(返回)Tensor对象。

  3. 矩阵运算

>>>a = tf.constant([[1, 2],
[3, 4]])
>>>b = tf.constant([[1, 1],
[1, 1]]) # Could have also said `tf.ones([2,2])`
>>>print(tf.add(a, b), "\n")
tf.Tensor(
[[2 3]
[4 5]], shape=(2, 2), dtype=int32)
>>>print(tf.multiply(a, b), "\n")
tf.Tensor(
[[1 2]
[3 4]], shape=(2, 2), dtype=int32)
>>>print(tf.matmul(a, b), "\n")
tf.Tensor(
[[3 3]
[7 7]], shape=(2, 2), dtype=int32)

  以上三个操作返回的都是Tensor对象,同时这三个操作可以使用'+', '*', '@'代替。

  4. 三种常用的操作

>>>c = tf.constant([[4.0, 5.0], [10.0, 1.0]])
>>>print(tf.reduce_max(c)) # Find the largest value
tf.Tensor(10.0, shape=(), dtype=float32)
>>>print(tf.argmax(c)) # Find the index of the largest value
tf.Tensor([1 0], shape=(2,), dtype=int64)
>>>print(tf.nn.softmax(c)) # # Compute the softmax
tf.Tensor(
[[2.6894143e-01 7.3105860e-01]
[9.9987662e-01 1.2339458e-04]], shape=(2, 2), dtype=float32)

  三种看名字就能看出功能的操作,其中tf.reduce_XX()是tensorflow中降维的操作。类似的操作:'reduce_all', 'reduce_any', 'reduce_logsumexp', 'reduce_max', 'reduce_mean', 'reduce_min', 'reduce_prod', 'reduce_sum'。

  

  5. Dtype转换  

>>>the_f64_tensor = tf.constant([2.2, 3.3, 4.4], dtype=tf.float64)
>>>the_f16_tensor = tf.cast(the_f64_tensor, dtype=tf.float16)
# Now, let's cast to an uint8 and lose the decimal precision
>>>the_u8_tensor = tf.cast(the_f16_tensor, dtype=tf.uint8)
>>>print(the_u8_tensor)
tf.Tensor([2 3 4], shape=(3,), dtype=uint8)

  numpy中可以使用astype()来进行转换,Tensorflow中则使用tf.cast()方法来转化不同数据类型的Tensor。

  

  6. 广播操作

  Tensor的广播操作和numpy中基本完全一样,机制可以看这篇文章:https://jakevdp.github.io/PythonDataScienceHandbook/02.05-computation-on-arrays-broadcasting.html

Tensorflow中Tensor对象的常用方法(持续更新)的更多相关文章

  1. jQuery常用方法(持续更新) jQuery(转)

    0.常用代码: 请容许我在1之前插入一个0,我觉得我有必要把最常用的代码放在第一位,毕竟大部分时间大家都是找代码的. (1)AJAX请求 $(function() { $('#send').click ...

  2. PHP 日常开发过程中的bug集合(持续更新中。。。)

    PHP 日常开发过程中的bug集合(持续更新中...) 在日常php开发过程中,会遇到一些意想不到的bug,所以想着把这些bug记录下来,以免再犯! 1.字符串 '0.00'.'0.0'.'0'  是 ...

  3. 好用的函数,assert,random.sample,seaborn tsplot, tensorflow.python.platform flags 等,持续更新

    python 中好用的函数,random.sample等,持续更新 random.sample random.sample的函数原型为:random.sample(sequence, k),从指定序列 ...

  4. Android中常用开发工具类—持续更新...

    一.自定义ActionBar public class ActionBarTool { public static void setActionBarLayout(Activity act,Conte ...

  5. 获取tensorflow中tensor的值

    tensorflow中的tensor值的获取: import tensorflow as tf #定义变量a a=tf.Variable([[[1,2,3],[4,5,6]],[[7,8,9],[10 ...

  6. Android开发中常用的库总结(持续更新)

    这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...

  7. 对Tensorflow中tensor的理解

    Tensor即张量,在tensorflow中所有的数据都通过张量流来传输,在看代码的时候,对张量的概念很不解,很容易和矩阵弄混,今天晚上查了点资料,并深入了解了一下,简单总结一下什么是张量的阶,以及张 ...

  8. 【python】实践中的总结——列表『持续更新中』

    2016-04-03 21:02:50 python list的遍历 list[a::b]   #从list[a] 开始,每b个得到一个元组,返回新的list 举个例子: >>> l ...

  9. 3.C#/.NET编程中的常见异常(持续更新)

    1.Object reference not set to an instance of an object. 未将对象引用(引用)到对象的实例,说白了就是有个对象为null,但是你在用它点出来的各种 ...

随机推荐

  1. Git链接http转ssh

    git remote set-url origin git@gitserver:USERNAME/PROJECT.git

  2. SPL常用迭代器

    ArrayIterator 熟悉使用seek()跳过元素 熟悉使用asort,ksort排序 <?php $fruits = array( 'apple'=>'apple value', ...

  3. 转 document.compatMode介绍

    对于document.compatMode,很多朋友可能都根我一样很少接触,知道他的存在却不清楚他的用途.今天在ext中看到 document.compatMode的使用,感觉这个对于我们开发兼容性的 ...

  4. 跟着拉大锯大神学Android——网络编程中运行后台服务器端口占用问题

    拉大锯网页地址:https://www.sunofbeach.net/u/1153952789488054272 跟着拉大锯大神学Android,在学到网络编程时,使用了大神搭建的用于学习的后台服务器 ...

  5. 单片机提高ADC精度总结

    在常用传感器中,模数转换器是其中至关重要的环节,模数转换器的精度以及系统的成本直接影响到系统的实用性.因此.如何提高模数转换器的精度和降低系统的成本是衡量系统是否具有实际应用价值的标准. 图 1    ...

  6. Eclipse中常用快捷键的使用

    1.补全代码的声明:alt + / 2.快速修复: ctrl + 1 3.批量导包:ctrl + shift + o 4.使用单行注释:ctrl + / 5.使用多行注释: ctrl + shift ...

  7. JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...

  8. Java实现 蓝桥杯 算法提高 歌唱比赛(暴力)

    试题 算法提高 歌唱比赛 问题描述 X市正在进行歌唱比赛,请你写一个程序计算得分. 每名选手从1到N编号,每名选手的综合成绩由以下几个部分组成: 1.歌唱得分占70% 2.才艺展示得分占20% 3.观 ...

  9. Java实现DFS深度优先查找

    1 问题描述 深度优先查找(depth-first search,DFS)可以从任意顶点开始访问图的顶点,然后把该顶点标记为已访问.在每次迭代的时候,该算法紧接着处理与当前顶点邻接的未访问顶点.这个过 ...

  10. Java实现台阶问题

    1 问题描述 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法. 2 解决方案 2.1 递归法 如果整个台阶只有1级,则显然只有一种跳法.如果台阶有2级,则有两种跳法:一种是分 ...