深度学习基础
神经网络的数学基础
神经网络的“齿轮”:张量运算
-
所有计算机程序最终都可以简化为二进制输入上的一些二进制运算(AND、OR、NOR等),与此类似,深度神经网络学到的所有变换也都可以简化为数值数据张量上的一些张量运算(tensor operation),例如加上张量、乘以张量等。
-
在最开始的例子中,我们通过叠加 Dense 层来构建网络:
keras.layers.Dense(512, activation='relu')
- 这个层可以理解为一个函数,输入一个 2D 张量,返回另一个 2D 张量,即输入张量的新表示。
- 具体而言,这个函数如下所示(其中 W 是一个 2D 张量,b 是一个向量,二者都是该层的属性):
output = relu(dot(W, input) + b)
- 这里有三个张量运算:输入张量和张量 W 之间的点积运算(dot)、得到的 2D 张量与向量 b 之间的加法运算(+)、最后的 relu 运算。
- relu(x) 是 max(x, 0)。
逐元素运算
-
relu 运算和加法都是逐元素(element-wise)的运算,即该运算独立地应用于张量中的每个