TensorFlow2.0:张量的数学运算

2023-10-27

(1)+ - * /
(2)** pow square
(3) sqrt
(4) // %
(5) exp log
(6)@ matmul
(7) linear layer

element-wise: + - * /
matrix-wise: @ matmul
dim-wise: reduce_mean/max/min/sum
**

一 + - * / % //运算

**
+:对应矩阵元素相加
-:对应矩阵元素相减
*:对应矩阵元素相除
/:对应矩阵元素相除
%:对应矩阵元素求余
//:对应矩阵元素整除

In [2]: a = tf.ones([2,2])#2*2矩阵,全部填充为1                                  

In [3]: b =  tf.fill([2,2],2.)#2*2矩阵,全部填充为2                              

In [4]: a                                                                       
Out[4]: 
<tf.Tensor: id=2, shape=(2, 2), dtype=float32, numpy=
array([[1., 1.],
       [1., 1.]], dtype=float32)>

In [5]: b                                                                       
Out[5]: 
<tf.Tensor: id=5, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
       [2., 2.]], dtype=float32)>

In [6]: a + b#对应矩阵元素相加                                                  
Out[6]: 
<tf.Tensor: id=8, shape=(2, 2), dtype=float32, numpy=
array([[3., 3.],
       [3., 3.]], dtype=float32)>

In [7]: a - b#对应矩阵元素相减                                                  
Out[7]: 
<tf.Tensor: id=10, shape=(2, 2), dtype=float32, numpy=
array([[-1., -1.],
       [-1., -1.]], dtype=float32)>

In [8]: a * b #对应矩阵元素相乘                                                 
Out[8]: 
<tf.Tensor: id=12, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
       [2., 2.]], dtype=float32)>

In [9]: a / b#对应矩阵元素相除                                                  
Out[9]: 
<tf.Tensor: id=14, shape=(2, 2), dtype=float32, numpy=
array([[0.5, 0.5],
       [0.5, 0.5]], dtype=float32)>

In [10]: b // a #对应矩阵元素整除                                               
Out[10]: 
<tf.Tensor: id=16, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
       [2., 2.]], dtype=float32)>

In [11]: b % a #对应矩阵元素求余                                                
Out[11]: 
<tf.Tensor: id=18, shape=(2, 2), dtype=float32, numpy=
array([[0., 0.],
       [0., 0.]], dtype=float32)>

**

二 tf.math.log( ) 和tf.math.exp( ) 函数

**

In [12]: a = tf.ones([2,2])                                                     

In [13]: a                                                                      
Out[13]: 
<tf.Tensor: id=22, shape=(2, 2), dtype=float32, numpy=
array([[1., 1.],
       [1., 1.]], dtype=float32)>

In [14]: tf.math.log(a)#矩阵对应元素取对数                                      
Out[14]: 
<tf.Tensor: id=24, shape=(2, 2), dtype=float32, numpy=
array([[0., 0.],
       [0., 0.]], dtype=float32)>

In [15]: tf.math.exp(a)#矩阵对应元素取指数                                      
Out[15]: 
<tf.Tensor: id=26, shape=(2, 2), dtype=float32, numpy=
array([[2.7182817, 2.7182817],
       [2.7182817, 2.7182817]], dtype=float32)>

In [17]: a = tf.random.normal([2,2])                                            

In [18]: a                                                                      
Out[18]: 
<tf.Tensor: id=38, shape=(2, 2), dtype=float32, numpy=
array([[ 0.12121297, -1.6076226 ],
       [ 1.4407614 ,  0.8430799 ]], dtype=float32)>

In [19]: tf.math.log(a)/tf.math.log(2.)#计算矩阵对应元素以2为底的对数           
Out[19]: 
<tf.Tensor: id=43, shape=(2, 2), dtype=float32, numpy=
array([[-3.044384  ,         nan],
       [ 0.5268315 , -0.24625869]], dtype=float32)>

In [20]: tf.math.log(a)/tf.math.log(10.)#计算矩阵对应元素以10为底的对数         
Out[20]: 
<tf.Tensor: id=48, shape=(2, 2), dtype=float32, numpy=
array([[-0.91645086,         nan],
       [ 0.15859208, -0.07413125]], dtype=float32)>

**

三 tf.pow( )和 tf.sqrt( )函数

**

In [2]: a = tf.fill([2,2],2.)                                                   

In [3]: a                                                                       
Out[3]: 
<tf.Tensor: id=2, shape=(2, 2), dtype=float32, numpy=
array([[2., 2.],
       [2., 2.]], dtype=float32)>

In [4]: tf.pow(a,3)#矩阵a所有元素取立方                                         
Out[4]: 
<tf.Tensor: id=5, shape=(2, 2), dtype=float32, numpy=
array([[8., 8.],
       [8., 8.]], dtype=float32)>

In [5]: a**3#矩阵a所有元素取立方                                                
Out[5]: 
<tf.Tensor: id=8, shape=(2, 2), dtype=float32, numpy=
array([[8., 8.],
       [8., 8.]], dtype=float32)>

In [6]: tf.sqrt(a)#矩阵a所有元素开平方                                          
Out[6]: 
<tf.Tensor: id=10, shape=(2, 2), dtype=float32, numpy=
array([[1.4142135, 1.4142135],
       [1.4142135, 1.4142135]], dtype=float32)>

**

四 @ matmul矩阵相乘

**

In [7]: a = tf.fill([2,2],1.)                                                   

In [8]: b = tf.fill([2,2],2.)                                                   

In [9]: a,b                                                                     
Out[9]: 
(<tf.Tensor: id=14, shape=(2, 2), dtype=float32, numpy=
 array([[1., 1.],
        [1., 1.]], dtype=float32)>,
 <tf.Tensor: id=17, shape=(2, 2), dtype=float32, numpy=
 array([[2., 2.],
        [2., 2.]], dtype=float32)>)

In [10]: a @ b#矩阵相乘                                                         
Out[10]: 
<tf.Tensor: id=20, shape=(2, 2), dtype=float32, numpy=
array([[4., 4.],
       [4., 4.]], dtype=float32)>

In [11]: tf.matmul(a,b)#矩阵相乘                                                
Out[11]: 
<tf.Tensor: id=22, shape=(2, 2), dtype=float32, numpy=
array([[4., 4.],
       [4., 4.]], dtype=float32)>

In [12]: a = tf.ones([4,2,3])                                                   

In [13]: b = tf.fill([4,3,5],2.)                                                

In [14]: a@b    #[2,3]@[3,5] = [2,5]                                                                
Out[14]: 
<tf.Tensor: id=30, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]]], dtype=float32)>

In [15]: tf.matmul(a,b)                                                         
Out[15]: 
<tf.Tensor: id=32, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]]], dtype=float32)>

With broadcasting

In [2]: a = tf.fill([4,2,3],1.)                                                                                                                                                                             

In [3]: b = tf.fill([3,5],2.)                                                                                                                                                                               

In [4]: a.shape                                                                                                                                                                                             
Out[4]: TensorShape([4, 2, 3])

In [5]: b.shape                                                                                                                                                                                             
Out[5]: TensorShape([3, 5])

In [6]: bb = tf.broadcast_to(b,[4,3,5])                                                                                                                                                                     

In [7]: bb.shape                                                                                                                                                                                            
Out[7]: TensorShape([4, 3, 5])

In [8]: a @ bb                                                                                                                                                                                              
Out[8]: 
<tf.Tensor: id=8, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]]], dtype=float32)>

In [9]: tf.matmul(a,bb)                                                                                                                                                                                     
Out[9]: 
<tf.Tensor: id=10, shape=(4, 2, 5), dtype=float32, numpy=
array([[[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]],

       [[6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6.]]], dtype=float32)>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow2.0:张量的数学运算 的相关文章

随机推荐

  • 机器翻译系统,主要划分为哪几大类型?

    直到20世纪80年代 一些机器翻译系统采用了两种方法 在这些方法中 源语言文本被分析转换成抽象表达形式 随后利用一些程序 通过识别词结构 词法分析 和句子结构 句法分析 解决歧义问题 其中有一种方法将抽象表达设计为一种与具体语种无关的 中间
  • Arduino学习笔记

    一 引脚 二 函数介绍 1 pinMode pin mode 引脚配置成输入或者输出 其中mode可以为INPUT或者OUTPUT 例如 pinMode 7 INPUT 将引脚7定义为输入接口 2 digitalWrite pin valu
  • OAuth2简介生成accessToken(一)

    1 OAuth3需要引入的依赖 版本号根据实际情况添加哦
  • HTTP中application/x-www-form-urlencoded字符说明

    一 概述 在学习ajax的时候 如果用post请求 需要设置如下代码 ajax setRequestHeader content type application x www form urlencoded 虽然知道需要这么做 但是不知道a
  • postman pre-request scripts 导入js文件_Postman 高级用法指南

    Postman是一款强大的API接口测试工具 有许多不容易发现的好用的功能 下面简单介绍其中一部分功能 详细内容可以参考文档 官方还有视频教程 非常方便入手 后续本博客会持续提供一些Postman使用的细节技巧 方便大家用Postman进行
  • strstr函数底层逻辑实现

    一 函数介绍 char strstr const char haystack const char needle 功能 在字符串haystack中查找字符串needle出现的位置 参数 haystack 源字符串首地址 needle 匹配字
  • C++读写txt文件(基本操作1)

    本博客主要写了用C 读写txt本文的基本操作 最简单的写入和读出两个基本操作 本程序的功能是向Test txt文件文件写入字符串 This is a Test12 和读取字符串 This is a Test12 并且将读取到的字符串存到te
  • python组件

    1 生成6位数字随机验证码 import random import string def num code length 6 生成长度为length的数字随机验证码 param length 验证码长度 return 验证码 return
  • STM32—ADC和DMA的应用之电流检测(第二部分:电流检测电路与数据处理)

    文章目录 前言 一 电流检测原理 1 霍尔效应 2 CC6902电流传感器 二 电流检测电路 三 数据处理 前言 前一部分介绍了如何配置ADC和DMA 这一部分介绍在硬件部分如何实现电流检测以及检测到电流后的数据处理 一 电流检测原理 1
  • QT-CSV文件读写

    QT CSV文件读写 前言 一 CSV文件初始化 二 CSV写入 三 CSV读取 四 程序链接 前言 csv文件之所以被用户推荐使用 我觉得即可以用excel打开 同时也是可以用文本编辑器打开 而且文本内容的显示也是比较有规律 用户查看起来
  • 2013中国数据库技术大会

    http www cn21 com cn meet 2013sjk yjjb html
  • Web 应用程序——我的心理备忘单

    介绍 本文是 持续交付 HTML 到 Kubernetes 的一部分 虽然我迫不及待地想深入了解分布式系统的细节 但我发现自己处于一个不愉快的境地 我认为最好从前端开始写 那是因为网络应用程序是当今的标准 在多个云中部署的 ArgoCD K
  • 图像增广:强化深度学习的视觉表现力

    目录 摘要 1 图像增广简介 2 图像增广的原理 3 常见的图像增广技术 4 如何在实际项目中应用图像增广 5 实际应用 摘要 当今 深度学习已经在计算机视觉领域取得了令人瞩目的成就 图像增广作为一种数据处理技术 让我们在使用有限的图像数据
  • Lipschitz常数、Lipschitz条件

    参考 https www zybang com question dd732fbc5a0224c6526bcdfba613b53c html https baike baidu com item lipschitz E6 9D A1 E4
  • OPENCV中的批改答题卡

    Fu Xianjun All Rights Reserved 文章目录 前言 一 为什么使用OPENCV 二 使用步骤 1 引入库 2 写入基本函数 这样打包好就可以套用了 多少方便不知道 3 导入图片利用上面的函数来进行处理 没错就是这么
  • 解决Jmeter压测异常率过高的问题

    今天在使用本地 Windows Jmeter对远程服务器进行压力测试的时候 发现异常率非常的高 但是项目中日志没有报错误 然后观察TCP链接数排除了服务端的嫌疑 发现随着压测的进行 TCP连接数越来越少 打开日志输出发现报了大量的以下错误
  • leetcode5.最长回文子串

    最长回文子串 给你一个字符串 s 找到 s 中最长的回文子串 如果字符串的反序与原始字符串相同 则该字符串称为回文字符串 示例 1 输入 s babad 输出 bab 解释 aba 同样是符合题意的答案 示例 2 输入 s cbbd 输出
  • 注释整段代码

    选中需要注释的整段代码 Ctrl 同时 即可 取消注释在选中按一遍Ctrl
  • 在 MCU 上运行高级 C++ 软件

    使用 C 开发用户应用程序有很多优势 因此该语言在包括基于 MCU 的系统中变得越来越流行也就不足为奇了 mbed 项目完全专注于这种语言 许多 RTOS 提供 C 兼容层 但与 大 系统 具有 MMU 相比 大多数 RTOS 都有一些限制
  • TensorFlow2.0:张量的数学运算

    1 2 pow square 3 sqrt 4 5 exp log 6 matmul 7 linear layer element wise matrix wise matmul dim wise reduce mean max min s