在使用numpy 对张量(数组)进行操作时,两个形状相同的张量进行加减等运算很容易理解,那么不同形状的张量之间的运算是通过广播来实现的。广播实际上很简单,但是弄清楚是也花了不小功夫,这里记录一下。

广播的目的是将两个不同形状的张量 变成两个形状相同的张量,即先对小的张量添加轴(使其ndim与较大的张量相同),在把较小的张量沿着新轴重复(使其shape与较大的相同)

广播的的限制条件为:两个张量的 trailing dimension(从后往前算起的维度)的轴长相等 或 其中一个的长度为1

import numpy as np
a=np.arange(0,12)
a=a.reshape(3,4)
b=np.arange(0,4)
print(a)
#[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]] print(b)
#[0 1 2 3] print(a.shape)
#(3, 4) print(b.shape)
#(4,) print(a.ndim)
#
print(b.ndim)
# a+b #array([[ 0, 2, 4, 6],
# [ 4, 6, 8, 10],
# [ 8, 10, 12, 14]])

上述 a+b 的计算过程等价为:

(1)先将b添加一个轴 即

(2)在将b沿着 新加的轴进行重复

 b.reshape(1,4)
#array([[0, 1, 2, 3]]) c=np.array([b,b,b])
#array([[0, 1, 2, 3],
# [0, 1, 2, 3],
# [0, 1, 2, 3]]) a+c #array([[ 0, 2, 4, 6],
# [ 4, 6, 8, 10],
# [ 8, 10, 12, 14]])

其他几个例子

x=np.arange(0,12)
x=x.reshape(3,4,1)
x
y=np.arange(0,8)
y=y.reshape(4,2)
y
q=x+y
q.shape
#(3,4,2)
x=np.arange(0,12)
x=x.reshape(3,4,1)
x
z=np.arange(0,2)
z=z.reshape(1,2)
z
q=x+z
q.shape
#(3,4,2)

x  :      y z  x+y    x+z 

最后放上几个图片便于理解

张量(tensor)的广播的更多相关文章

  1. tensorflow中张量(tensor)的属性——维数(阶)、形状和数据类型

    tensorflow的命名来源于本身的运行原理,tensor(张量)意味着N维数组,flow(流)意味着基于数据流图的计算,所以tensorflow字面理解为张量从流图的一端流动到另一端的计算过程. ...

  2. 张量 (tensor) 是什么?

    对于大部分已经熟练的数学和物理工作者, 这实在是一个极为基础的问题. 但这个问题在我刚接触张量时也困扰了我很久. 张量的那么多定义, 究竟哪些是对的? (显然都是对的. ) 它们的关系是什么? 我尽可 ...

  3. 如何理解张量tensor

    1 关于张量的四种定义 “张量”在不同的运用场景下有不同的定义. 第一个定义,张量是多维数组,这个定义常见于各种人工智能软件.听起来还好理解.--本文仅解释此种 2 多维数组 从第一个定义:张量是多维 ...

  4. 2、介绍在TensorFlow当中使用不同的方式创建张量tensor

    import tensorflow as tf from tensorflow.python.framework import ops ops.reset_default_graph() #开始一个计 ...

  5. AI - TensorFlow - 张量(Tensor)

    张量(Tensor) 在Tensorflow中,变量统一称作张量(Tensor). 张量(Tensor)是任意维度的数组. 0阶张量:纯量或标量 (scalar), 也就是一个数值,例如,\'Howd ...

  6. pytorch中tensor张量数据基础入门

    pytorch张量数据类型入门1.对于pytorch的深度学习框架,其基本的数据类型属于张量数据类型,即Tensor数据类型,对于python里面的int,float,int array,flaot ...

  7. 学习笔记DL004:标量、向量、矩阵、张量,矩阵、向量相乘,单位矩阵、逆矩阵

    线性代数,面向连续数学,非离散数学.<The Matrix Cookbook>,Petersen and Pedersen,2006.Shilov(1977). 标量.向量.矩阵.张量. ...

  8. 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-1-Tensor

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 Tensor Tensor可以是一个数 ...

  9. 【tensorflow2.0】张量的结构操作

    张量的操作主要包括张量的结构操作和张量的数学运算. 张量结构操作诸如:张量创建,索引切片,维度变换,合并分割. 张量数学运算主要有:标量运算,向量运算,矩阵运算.另外我们会介绍张量运算的广播机制. 本 ...

  10. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

随机推荐

  1. realsense SDK编译 debug

    1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...

  2. Django Timezone 处理

    https://blog.csdn.net/qq_37049781/article/details/79347278 Django 中的时区在现实环境中,存在有多个时区.用户之间很有可能存在于不同的时 ...

  3. 头文件里声明和定义,Qt编译不过问题

    1.现象1 Qt5.2.1,新建头文件,声明一个类,然后在此头文件中实现类的static变量和方法,但是编译不过,显示:multiple definition of `xxx'. 2.现象2 在高版本 ...

  4. Qt编写气体安全管理系统18-数据库设置

    一.前言 作为一个管理系统,数据库肯定是不可或缺的,Qt内置的sqlite数据库已经是够用的,而且本人亲测数据量能支持亿级别,而不是像网上很多人说的千万级别,我模拟过一亿多条数据,依然能够很好的查询, ...

  5. 使用Varnish为网站加速

    (1).Varnish概述 Varnish是一款高性能的开源HTTP加速器,可以有效降低web服务器的负载,提升访问速度.根据官方的说法,Varnish是一个cache型的HTTP反向代理. Varn ...

  6. Internet Download Manager 快速下载插件,破解版

    下载下来直接双击绿化按钮即可. 软件链接 : https://pan.baidu.com/s/1agK3cLtjJzXcGEgsuv5mVQ  提取码: ckm7

  7. 模仿系统C键功能菜单

    1.可以拖拽C键 2.依赖zepto 3.点击弹出菜单 效果预览:

  8. [LintCode] 619 Binary Tree Longest Consecutive Sequence III 二叉树最长连续序列 III

    Given a k-ary tree, find the length of the longest consecutive sequence path. The path could be star ...

  9. 关于Form、ModelForm的一些操作(持续更新)

    1.前端循环:后端传到前端的form是可以循环的,以此获得想要展示的元素 <form method="post" class="form-horizontal&qu ...

  10. 在Django中template遇到 "context must be a dict rather

    原代码: # 使用模板文件 # 1.加载模板文件,获取一个模板文件 temp = loader.get_template('booktest/index.html') # 2.定义模板上下文:给模板文 ...