算法工程师修仙之路:Python深度学习(八)

深度学习基础

神经网络的数学基础


神经网络的“齿轮”:张量运算

张量变形

  • 第三个重要的张量运算是张量变形(tensor reshaping)。张量变形是指改变张量的行和列,以得到想要的形状。变形后的张量的元素总个数与初始张量相同。

    >>> x = np.array([[0., 1.],
    				  [2., 3.],
    			      [4., 5.]])
    >>> print(x.shape)
    (3, 2)
    >>> x = x.reshape((6, 1))
    >>> x
    array([[ 0.],
    	   [ 1.],
    	   [ 2.],
    	   [ 3.],
    	   [ 4.],
    	   [ 5.]])
    >>> x = x.reshape((2, 3))
    >>> x
    array([[ 0., 1., 2.],
    	   [ 3., 4., 5.]])
    
  • 经常遇到的一种特殊的张量变形是转置(transposition)。对矩阵做转置是指将行和列互换,使 x[i, :] 变为 x[:, i]。

    >>> x = np.zeros((300, 20))	# 创建一个形状为 (300, 20) 的零矩阵
    >>> x = np.transpose(x)
    >>> print(x.shape)
    (20, 300)
    

张量运算的几何解释

  • 对于张量运算所操作的张量,其元素可以被解释为某种几何空间内点的坐标,因此所有的张量运算都有几何解释。

  • 通常来说,仿射变换、旋转、缩放等基本的几何操作都可以表示为张量运算。举个例子,要将一个二维向量旋转 theta 角,可以通过与一个2×2矩阵做点积来实现,这个矩阵为 R = [u, v],其中 u 和 v 都是平面向量:u = [cos(theta), sin(theta)],v = [-sin(theta), cos(theta)]。

深度学习的几何解释

  • 神经网络完全由一系列张量运算组成,而这些张量运算都只是输入数据的几何变换。 因此,你可以将神经网络解释为高维空间中非常复杂的几何变换,这种变换可以通过许多简单的步骤来实现。

  • 机器学习的内容:为复杂的、高度折叠的数据流形找到简洁的表示。

  • 深度学习特别擅长这一点:它将复杂的几何变换逐步分解为一长串基本的几何变换,深度网络的每一层都通过变换使数据解开一点点,许多层堆叠在一起,可以实现非常复杂的解开过程。

猜你喜欢

转载自blog.csdn.net/faker1895/article/details/87807486
今日推荐