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. An easy problem(hdu2055)

    输入格式:一个整型,然后循环输入一个字符加一个整型. 思考:首先用scanf_s()函数输入整型.然后一个大循环,用scanf_s()函数同时输入字符和整型.第一个scanf_s()函数后,后面还要输 ...

  2. 还不会K8S吗?先从kubeadm开始吧

    目录 1. 准备工作 1.1 机器准备 1.2 系统配置 1.2.1 主机名及域名解析 1.2.2 免密登录 1.2.3 配置yum源 1.2.4 安装必要依赖包 1.2.5 关闭防火墙.SELinu ...

  3. var、let、const三者的区别

    var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问. const用来定义常量,使用时必须初始化(即必须赋值),只能 ...

  4. 《机器学习_09_01_决策树_ID3与C4.5》

    简介 先看一个例子,某银行是否给用户放贷的判断规则集如下: if 年龄==青年: if 有工作==是: if 信贷情况==非常好: 放 else: 不放 else: if 有自己的房子==是: if ...

  5. Unity 游戏框架搭建 2019 (五十、五十一) 消息机制小结&MonoBehaviourSimplify 是框架?

    我们花了 5 篇文章学习了消息机制的方方面面.并且完成了一个简易消息机制,之后集成到了我们的 MonoBehaviourSimplify 里. 现在 MonoBehaviourSimplify 有一点 ...

  6. Mysql基础(四)

    ##约束 /* 含义:一种限制,用于限制表中的数据, 为了保证表中的数据的准确性和可靠性 分类:六大约束 not null: 非空,用于保证该字段的不能为空,比如姓名,学号等 default: 默认, ...

  7. CNN卷积神经网络的卷积层、池化层的输出维度计算公式

    卷积层Conv的输入:高为h.宽为w,卷积核的长宽均为kernel,填充为pad,步长为Stride(长宽可不同,分别计算即可),则卷积层的输出维度为: 其中上开下闭开中括号表示向下取整. MaxPo ...

  8. 【转】roc曲线与auc值

    https://www.cnblogs.com/gatherstars/p/6084696.html ROC的全名叫做Receiver Operating Characteristic,其主要分析工具 ...

  9. jupyter notebook 安装扩展nbextensions

    安装nbextensions可提高jupyter notebook效率,安装步骤如下: 1.pip 方式安装: (gluon) [root@localhost ~]# pip install jupy ...

  10. Chisel3 - util - Arbiter

    https://mp.weixin.qq.com/s/7Y23gV6yPvtmvKHTo2I8mw   基于ReadyValid接口实现的多入单出仲裁器.   参考链接: https://github ...