Tensorflow(五) —— Tensor的broadcast_to操作

本文介绍了Tensorflow中的broadcast_to操作,通过实例演示了如何利用该功能在不同维度和大小的张量间进行高效运算,重点讲解了广播规则、隐式和显式应用,以及与tf.tile的区别。适合理解Tensorflow中的数据传播原理。

1 broadcast_to介绍

1.1 key idea

  • insert into 1 dim ahead if needed
  • expand dims with size 1 to same size
  • 即先升维再扩张到目标数据位数
  • broadcast 没有进行数据复制,但却完成相应数据的运算。

1.2how to understand

  • when it has no axis, create a new concept(axis)
  • when it has dim of size 1,

1.3 why broadcasting

  • for real demading
  • memory consumption

1.4 broadcastable

  • Match from last dim 最右边必须对齐 位数相同或者为1
  • if current dim=1,expand to same
  • if either has no dim, insert one dim and expand to same
  • otherwise, Not broadcastable
[4,32,14,14]
[2,32,14,14]
not broadcastable

2 隐式

"""
a = tf.random.uniform([4,28,28,3])

b = tf.constant(5.)
print("a+b:",(a+<
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\__init__.py", line 41, in <module> from tensorflow.python.tools import module_util as _module_util File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\python\__init__.py", line 40, in <module> from tensorflow.python.eager import context File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\python\eager\context.py", line 32, in <module> from tensorflow.core.framework import function_pb2 File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\core\framework\function_pb2.py", line 16, in <module> from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2 File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\core\framework\attr_value_pb2.py", line 16, in <module> from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2 File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\core\framework\tensor_pb2.py", line 16, in <module> from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2 File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\core\framework\resource_handle_pb2.py", line 16, in <module> from tensorflow.core.framework import tensor_shape_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__shape__pb2 File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\tensorflow\core\framework\tensor_shape_pb2.py", line 36, in <module> _descriptor.FieldDescriptor( File "D:\DevelopTools\Anaconda\envs\d2l\lib\site-packages\google\protobuf\descriptor.py", line 621, in __new__ _message.Message._CheckCalledFromGeneratedFile() TypeError: Descriptors cannot be created directly. If this call came from a _pb2.py file, your generated code is out of
最新发布
03-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值