1.1 向量的1范数

向量的1范数即:向量的各个元素的绝对值之和,上述向量a的1范数结果就是:29,MATLAB代码实现为:norm(a,1);

1.2 向量的2范数

向量的2范数即:向量的每个元素的平方和再开平方根,上述a的2范数结果就是:15,MATLAB代码实现为:norm(a,2);

1.3 向量的无穷范数

1.向量的负无穷范数即:向量的所有元素的绝对值中最小的:上述向量a的负无穷范数结果就是:5,MATLAB代码实现为:norm(a,-inf); 
2..向量的正无穷范数即:向量的所有元素的绝对值中最大的:上述向量a的负无穷范数结果就是:10,MATLAB代码实现为:norm(a,inf);

二、矩阵的范数

首先我们将介绍数学中矩阵的范数的情况,也就是无论哪个学科都统一的一种规定。。。 
例如矩阵A = [ -1 2 -3; 
4 -6 6]

2.1 矩阵的1范数

矩阵的1范数即:矩阵的每一列上的元素绝对值先求和,再从中取个最大的,(列和最大),上述矩阵A的1范数先得到[5,8,9],再取最大的最终结果就是:9,MATLAB代码实现为:norm(A,1);

2.2 矩阵的2范数

矩阵的2范数即:矩阵ATA的最大特征值开平方根,上述矩阵A的2范数得到的最终结果是:10.0623,MATLAB代码实现为:norm(A,2);

2.3 矩阵的无穷范数

矩阵的1范数即:矩阵的每一行上的元素绝对值先求和,再从中取个最大的,(行和最大),上述矩阵A的1范数先得到[6;16],再取最大的最终结果就是:16,MATLAB代码实现为:norm(A,inf);

接下来我们要介绍机器学习的低秩,稀疏等一些地方用到的范数,一般有核范数,L0范数,L1范数(有时很多人也叫1范数,这就让初学者很容易混淆),L21范数(有时也叫2范数),F范数。。。上述范数都是为了解决实际问题中的困难而提出的新的范数定义,不同于前面的矩阵范数。


import numpy as np
a=np.array([[complex(1,-1),3],[2,complex(1,1)]])  
print(a)
print("矩阵2的范数")
print(np.linalg.norm(a,ord=2) )   #计算矩阵2的范数
print("矩阵1的范数")
print(np.linalg.norm(a,ord=1) )   #计算矩阵1的范数
print("矩阵无穷的范数")print(np.linalg.norm(a,ord=np.inf) )


# arr = np.array([[-1,2,-3],
# [4,-6,6]])
# x = np.dot(arr.T,arr)
# print(x)
# a,b = np.linalg.eig(x)   //a为特征值元组
# print(a)

python如何计算向量每个分量的导数_权重

python如何计算向量每个分量的导数_代码实现_02


*********第二周第一课作业1

模型预测每个例子都是0。一般来说,在网络中初始化所有的权重为零,从而无法打破对称性。这意味着每一层的每个神经元都将学习相同的东西,你也可以训练一个神经网络,每一层都有n l=1n l=1,而网络并不比逻辑回归等线性分类器更强大。

你应该记住的是:应该随机初始化l W l,以打破对称性。然而,初始化偏差b l到0是可以的。只要W l是随机初始化,对称就会被破坏。

如果随机值比较大:成本开始非常高。这是因为在大量随机值权重的情况下,最后一个激活(sigmoid)输出结果非常接近于0或1,当它出现错误时,就会导致这个示例的损失非常大。事实上,当log(3)=log(0)log(3)=log(0)时,损失趋于无穷大。糟糕的初始化会导致渐变/爆炸式的渐变,这也会减慢优化算法的速度。如果您对这个网络进行更长时间的培训,您将看到更好的结果,但是用过于庞大的随机数来初始化会减慢优化的速度。

总而言之:将权重初始化到非常大的随机值并不能很好地工作。希望用小的随机值进行初始化会更好。重要的问题是:这些随机值应该有多小?让我们在接下来的部分中找到答案

python如何计算向量每个分量的导数_代码实现_03

*********第二周第一课作业2

python如何计算向量每个分量的导数_python如何计算向量每个分量的导数_04

cross_entropy_cost = compute_cost(A3, Y)  # This gives you the cross-entropy part of the cost

### START CODE HERE ### (approx. 1 line)
L2_regularization_cost = 1/m*lambd/2*(np.sum(W1**2)+np.sum(W2**2)+np.sum(W3**2))
### END CODER HERE ###

cost = cross_entropy_cost + L2_regularization_cost

观察:一个超参数的值,你可以使用一个开发集进行调优。L2正则化使你的决策边界更加平滑。如果太大,也有可能“过于平滑”,导致一个具有高度偏差的模型。什么是l2-正则化实际上在做什么?l2-正则化依赖于这样一种假设,即具有小重量的模型比具有大重量的模型更简单。因此,通过对成本函数中权重的平方值进行惩罚,你将所有的权重都推到更小的值上。要有大的重量,成本太高了!这就导致了一个更平滑的模型,当输入发生变化时,输出的变化会更慢。

你应该记住的是,l2-正则化的含义:成本计算:一个正规化的术语被添加到成本的反向传播函数中:在梯度中有额外的术语,关于权重矩阵的权重最终会变小(“重量衰减”):权重被推到更小的值。

dropout
    D1 = np.random.rand(A1.shape[0],A1.shape[1])                                         # Step 1: initialize matrix D1 = np.random.rand(..., ...)
    D1 = D1 < keep_prob   dA2 = dA2 * D2              # Step 1: Apply mask D2 to shut down the same neurons as during the forward propagation
    dA2 = dA2 / keep_prob           # Step 2: Scale the value of neurons that haven't been shut down