博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Theano - 广播(broadcasting)
阅读量:5941 次
发布时间:2019-06-19

本文共 1059 字,大约阅读时间需要 3 分钟。

广播(Broadcasting)

广播是这样的一个机制:它允许不同维度的张量进行加法或者乘法运算。在运算时,他将会沿着维度缺失的方向复制较小的那个张量。

通过广播机制,一个标量可以被加到矩阵上,一个向量可以被加到矩阵上,或者一个标量可以被加到向量上。

图片描述

如上图,广播一个行矩阵。T和F分别表示True和False,指明沿着哪个维度可以进行广播。如果第二个参数是向量,它的形状为(2,)以及它的广播模式为(False,)。它将会自动向左展开,匹配矩阵的维度,最终得到(1,2)和(True,Fale)。

不像numpy那样动态地进行广播,Theano需要知道哪些维度需要进行广播。当可用的时候,广播信息将会以变量的类型给出。

下面的代码说明为了和矩阵执行加法运算,行和列怎么进行广播的:

import theanoimport numpyimport theano.tensor as Tr = T.row()r.broadcastable# (True, False)mtr = T.matrix()mtr.broadcastable# (False, False)f_row = theano.function([r, mtr], [r + mtr])R = numpy.arange(3).reshape(1,3)R# array([[0, 1, 2]])M = numpy.arange(9).reshape(3, 3)M# array([[0, 1, 2],#        [3, 4, 5],#        [6, 7, 8]])f_row(R, M)# [array([[  0.,   2.,   4.],#        [  3.,   5.,   7.],#        [  6.,   8.,  10.]])]c = T.col()c.broadcastable# (False, True)f_col = theano.function([c, mtr], [c + mtr])C = numpy.arange(3).reshape(3, 1)C# array([[0],#        [1],#        [2]])M = numpy.arange(9).reshape(3, 3)f_col(C, M)# [array([[  0.,   1.,   2.],#        [  4.,   5.,   6.],#        [  8.,   9.,  10.]])]

转载地址:http://wnqtx.baihongyu.com/

你可能感兴趣的文章
如何在 Swift 语言下使用 iOS Charts API 制作漂亮图表?
查看>>
论代码审查的重要性
查看>>
「docker实战篇」python的docker爬虫技术-导学(一)
查看>>
如何确定一个网站是用Wordpress开发的
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
wdcp 安装
查看>>
C语言运算符优先级相关问题
查看>>
MP4视频播放器代码
查看>>
Nginx 匹配 iphone Android 微信
查看>>
ldap
查看>>
Yum软件仓库配置
查看>>
linux 压缩与解压总结
查看>>
mysql脚本1064 - You have an error in your SQL syntax; check the manual
查看>>
nessus 本地扫描(一)
查看>>
linux服务器磁盘陈列
查看>>
python----tcp/ip http
查看>>
我的友情链接
查看>>
第一本docker书学习笔记1-3章
查看>>
一個典型僵尸網絡淺析
查看>>