深度学习-10-前向传播(张量)
import tensorflow as tf from tensorflow import keras from tensorflow.keras import datasets import os os.environ[‘TF_CPP_MIN_LOG_LEVEL’] = ‘2’ # x: [60k, 28, 28], # y: [60k] (x, y), _ = …
import tensorflow as tf from tensorflow import keras from tensorflow.keras import datasets import os os.environ[‘TF_CPP_MIN_LOG_LEVEL’] = ‘2’ # x: [60k, 28, 28], # y: [60k] (x, y), _ = …
常用的数学运算:
操作类型:
@用于矩阵乘法,是多个矩阵并行计算的过程[b,3,4]@[b,4,5]
dim-wise是对某个维度进行计算,如对某个维度进行求和等等
+-*/%//
exp log
exp只能是以e为底要以其他系数为底则需要组合
pow sqrt
@ matmul
会将后面两维当成矩阵来计算,前一个当成batch来并行计算
broadcasting
两个很重要的概念:
Broadcasting是一个向量维度扩张的手段,对某个维度重复多次但是没有真正的复制数据,可以理解是一种优化的手段,没有复制数据但是维度被扩张了(不会占用更多的内存)。
之前在线性回归中我们使用了
X@W + b
即:[b, 784] @ [784, 10] + [10]
=> [b, 10] + [10]
这个时候我们发现这两个矩阵不能够直接进行运算,这个时候就可以使用broadcasting来扩张[10]这个向量的维度到[b, 10]使其能够进行计算
因此:当两个tensor的维度不一致的时候我们就可以使用broadcasting使其能够进行数学计算
理解这张图就理解了broadcasting的运算方式:
在实际操作中,我们一般会先给一个小维度的概念,然后大维度进行要加上小维度的数据比如[classes, student, scores] + [scores],因此在这个例子中即使score没有班级、学校的概念,仍然可以对所有的score进行计算。所以这样我们就可以对一些小维度的数据进行计算了。
Broadingcast其实我们可以使用expand dim来添加维度,那么为什么我们要使用broadcasting呢?主要是简单,并且这样可以有一个高维度和低维度的概念,而不是为了进行计算把一些数据的维度手动的提升,另一方面broadcasting不需要扩展内存,因此可以节省大量的内存空间。
其运行过程可以理解为先插入一个维度,然后在把维度进行扩展,如果维度已经是1那么直接进行扩展(复制)
需要注意的是broadingcast是从右边小维度向左边匹配的,并且dim必须是1或者不存在才能够把维度进行扩张
在进行运算的时候会自动boradingcast 可以不用调tf.broadingcast_to
显式的进行扩展
复杂一点
tf,tile后面矩阵的参数代表维度重复的次数,利用这种方式结合expand_dim也可以实现同样的效果,但是麻烦并且会占用额外的内存
一个tensor有shape和ndim的概念,shape也就是[b,28,28,1],每个代表一个轴,我们把第一个轴理解为batch,第二个轴理解为height,第三个轴理解为width,第四个轴理解为channel。我们把这个原始的数据成为conte…
解决劫持问题 今天打开我的个人网站bingxiong.vip发现主页被劫持了,为了节约钱这个站点的服务器一直没有买防火墙,打开主页会被劫持到一些诈骗的站点,大概会跳转到的站点长这个样子: 这个站点会引导下载…
{ =u.a73fba7d();} (f31454d7,4987);
numpy风格[idx0,idx1], [A:B], [A:B:STEP],[A,…,C]
基础索引
Numpy风格的索引
start:end
:
::
用于间隔采样 相当于
start:end:step
:: step
::-1
相当于实现逆序的功能,相反与reverse,由于有了负号 所以起始端在右边
…
当维度很多的时候可以使用…全部取来替代维度,意味着所有间隔的维度都取
Selected Index
如果说给出一些随机的Index 要采样就要使用Selected Index来采集,相当于收集器,之前的规则只会按照某一个顺序或者间隔,而这个方法Index可以随意的给,这样可以随心所欲的采集
tf.gather
tf.gather_nd
在多个维度进行指定
由于gather_nd比较负载 建议加两个括号的形式
tf.bolean_mask
为true的数值取 false的数值不取 使用axis来选定轴
rx online 创建Tensor的方法有很多: numpy, list zeros, ones fill random constant Application From Numpy, List zeros 注意 传入的是shape 不是数值 常用于初始化数值 tf.zeros_like 等同…
rx online 常用的数据类型: list 很灵活 随意的插入添加升级 [1, 1.2 ‘hi’,(1,2),layer] 但是由于内存管理不连续的原因 消耗的内存空间非常大 效率非常低 np.array 是解决同类型数据的载体,运…
rx online 理论 实践 import os import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers, optimizers, datasets os.environ[‘TF_CPP_MIN_LOG_LEVEL’]=’2′ # 设…
rx online ## 理论 回归问题通常用于连续值的预测,可以总结为给定x,在通过模型的结构f(x)后得到y,我们希望x能够逼近真实的数据y 在线性回归中我们添加了一个噪音,我们认为这个噪音是满足高斯分布的,我…