TensorFlow基本操作5-Broadcasting
重点函数
数据复制:
tf.tile(x, multiples)
8 Broadcasting vs 数据复制
一、不需要人为 1.扩充维度, 2.复制填充数据。
二、节省空间。
数据复制:
通过 tf.tile(x, multiples)
函数完成数据在指定维度上的复制操作,multiples 分别指定了每个维度上面的复制倍数,对应位置为 1 表明不复制,为 2 表明新长度为原来的长度的 2 倍,即数据复制一份,以此类推。
Broadcasting:
Broadcasting 也叫广播机制(自动扩展也许更合适),它是一种轻量级张量复制的手段,在逻辑上扩展张量数据的形状,但是只要在需要时才会执行实际存储复制操作。对于大部分场景,Broadcasting 机制都能通过优化手段避免实际复制数据而完成逻辑运算,从而相对于 tf.tile()
函数,减少了大量计算代价。
Broadcasting 机制的核心思想是普适性,即同一份数据能普遍适合于其他位置。在验证普适性之前,需要将张量 shape 靠右对齐,然后进行普适性判断:对于长度为 1 的维度,默认这个数据普遍适合于当前维度的其他位置;对于不存在的维度,则在增加新维度后默认当前数据也是普适性于新维度的,从而可以扩展为更多维度数、其他长度的张量形状。
Broadcasting 作为优化手段,系统会根据数据自动匹配(隐式)。
通过 tf.broadcast_to(x, new_shape)
可以显式将现有 shape 扩张为 new_shape。