深度学习常见算法伪码

反向传播算法

反向传播算法的三步骤

(1) 前馈计算每一层的净输入 () 和激活值 (),直到最后一层;

(2) 反向传播计算每一层的误差项 ();

(3) 计算每一层参数的偏导数,并更新参数.

算法伪码

输入: 训练集 = {((), ())} =1,验证集,学习率, 正则化系数,网络层 数,神经元数量 , 1 ≤  ≤ .

1 随机初始化 ,  ; 

2 repeat 



​	3 对训练集 中的样本随机重排序;4 for  = 1 ⋯  do 

​			5 从训练集 中选取样本((), ());6 前馈计算每一层的净输入 () 和激活值 (),直到最后一层;7  反向传播计算每一层的误差 ();8  计算每一层参数的导数  

​		    9  更新参数 

10 end 



11 until 神经网络模型在验证集 上的错误率不再下降; 输出: , 

梯度下降

一般不特指的话, 梯度下降指的就是 Batch Gradient descent

Batch Gradient descent (批量梯度下降)

// A code block
for i in range ( epochs ):   #epoch中文名字叫训练周期,epoch每增加1,就代表训练集上的所有数据被使用一次
	
	#表示使用batchsize个数据来更新参数。这里Batch恰好等于训练集上的所有数据
	params_grad = evaluate_gradient ( loss_function , training_data , params )
	
	params = params - learning_rate * params_grad 
	#完成一个Batch训练,相当于参数迭代(iteration/updata)一次

Stochastic Gradient descent (随机梯度下降)

for i in range ( nb_epochs ): 
	np.random .shuffle (training_data)
	for example in training_data :
		#表示使用单个样例来进行参数更新/迭代,这里的batchsize=1。每个Batch恰好等于单个样例
		params_grad = evaluate_gradient ( loss_function , example , params )
		
		params = params - learning_rate * params_grad
		##完成一个Batch训练,相当于参数迭代(iteration/updata)一次

Min Batch Gradient descent (小批量梯度下降)

for i in range ( nb_epochs ):#epoch每增加1,就代表训练集上的所有数据被使用一次
	np. random . shuffle ( training_data  )#打乱训练集上的数据
	for batch in get_batches (training_data , batch_size =50):#每次从训练集上拿50个样例,直到拿完为止。
	
		#一次参数更新/迭代(iteration/updata)需要用到batchsize个样例,这里的batchsize=50。每个Batch恰好等于50个样例
		params_grad = evaluate_gradient ( loss_function , batch , params )
		params = params - learning_rate * params_grad
		#每个 Epoch 具有的 Iteration 个数: training_data/batchsize(完成一个Batch训练,相当于参数迭代一次)

你可能感兴趣的:(学习,深度学习)