内容简介
本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用 Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习。书中不仅介绍了深度学习和神经网络的概念、特征等基础知识,对误差反向传播法、卷积神经网络等也有深入讲解,此外还介绍了深度学习相关的实用技巧,自动驾驶、图像生成、强化学习等方面的应用,以及为什么加深层可以提高识别精度等疑难的问题。
本书适合深度学习初学者阅读,也可作为高校教材使用。
(神经网络的内积)
下面我们使用 NumPy 矩阵来实现神经网络。这里我们以图 3-14 中的简单神经网络为对象。这个神经网络省略了偏置和激活函数,只有权重。
图 3-14 通过矩阵的乘积进行神经网络的运算
实现该神经网络时,要注意 $\boldsymbol{X}$、$\boldsymbol{W}$、$\boldsymbol{Y}$ 的形状,特别是 $\boldsymbol{X}$ 和 $\boldsymbol{W}$ 的对应维度的元素个数是否一致,这一点很重要。
>>> X = np.array([1, 2]) >>> X.shape (2,) >>> W = np.array([[1, 3, 5], [2, 4, 6]]) >>> print(W) [[1 3 5] [2 4 6]] >>> W.shape (2, 3) >>> Y = np.dot(X, W) >>> print(Y) [ 5 11 17]
如上所示,使用 np.dot
(多维数组的点积),可以一次性计算出 $\boldsymbol{Y}$ 的结果。这意味着,即便 $\boldsymbol{Y}$ 的元素个数为 100
或 1000
,也可以通过一次运算就计算出结果!如果不使用 np.dot
,就必须单独计算 $\boldsymbol{Y}$ 的每一个元素(或者说必须使用 for
语句),非常麻烦。因此,通过矩阵的乘积一次性完成计算的技巧,在实现的层面上可以说是非常重要的。
评论