张量的广播机制

  • tensorflow 的字面翻译是----张量(tensor)—流(flow)
  • 为什么要引入张量的广播机制,原因是有利可图,这个利益就是

  • 能节约内存空间,说白了就是省钱!!!

  • 凡事都有两面,既然能省钱,那一定费脑子,哲学一点的说法就是’抽象’

  • 对于张量的加法,乘法,不要求两个张量的维度完全相同,对于有很多重复元素的张量而言,可以用一个低纬度张量代表高维张量
  • 1.广播的原则
    如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,

  • 2. 或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。

  • 1,2句话乃是理解广播的核心。广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。

1. 两个数组各维度大小从后往前比对均一致

  • 案例一
import numpy as np
A = np.zeros((2,5,3,4))
B = np.zeros((3,4))
print((A+B).shape) # 输出 (2, 5, 3, 4)

A = np.zeros((4))
B = np.zeros((3,4))
print((A+B).shape) # 输出(3,4)
  • 案例二

在这里插入图片描述

import numpy as np

arr1 = np.array([[0, 0, 0],[1, 1, 1],[2, 2, 2], [3, 3, 3]])  #arr1.shape = (4,3)
arr2 = np.array([1, 2, 3])    #arr2.shape = (3,)
arr_sum = arr1 + arr2
print(arr_sum)



print('-'*30+'分割线'+'-'*30)
import numpy as np

arr1 = np.array([[0, 0, 0],[1, 1, 1],[2, 2, 2], [3, 3, 3]])  #arr1.shape = (4,3)
arr2 = np.array([[1, 2, 3]])    #arr2.shape = (1,3)
arr_sum = arr1 + arr2
print(arr_sum)
[[1 2 3]
 [2 3 4]
 [3 4 5]
 [4 5 6]]
------------------------------分割线------------------------------
[[1 2 3]
 [2 3 4]
 [3 4 5]
 [4 5 6]]
  • 案例三
    在这里插入图片描述
a=np.array(range(3*4*2)).reshape([3,4,2]) #shape=[3,4,2]

b=np.array([[ 0,  1], #shape=[4,2]]
        [ 2,  3],
        [ 4,  5],
        [ 6,  7]])

c=a+b

2. 两个数组存在一些维度大小不相等时,有一个数组的该不相等维度大小为1

  • 案例一
import numpy as np

arr1 = np.array([[0, 0, 0],[1, 1, 1],[2, 2, 2], [3, 3, 3]])  #arr1.shape = (4,3)
arr2 = np.array([[1],[2],[3],[4]])    #arr2.shape = (4, 1)

arr_sum = arr1 + arr2
print(arr_sum)

输出结果如下:
[[1 1 1]
 [3 3 3]
 [5 5 5]
 [7 7 7]]

在这里插入图片描述

A = np.zeros((2,5,3,4))
B = np.zeros((3,1))
print((A+B).shape) # 输出:(2, 5, 3, 4)

A = np.zeros((2,5,3,4))
B = np.zeros((2,1,1,4))
print((A+B).shape) # 输出:(2, 5, 3, 4)

A = np.zeros((1))
B = np.zeros((3,4))
print((A+B).shape) # 输出(3,4)

参考链接一

参考链接二

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值