深度学习进阶(二)--神经网络结构算法以及梯度下降法

总结一下今天的学习过程

注:感觉最近状态很不好,精神头有点不足,没有一开始的激情了,就比如说今天的学习,感觉不是很积极

一是继续捣鼓了GPU的配置环境,还是不怎么OK,也许是测试或验证的方式不对

二是看了神经网络结果以及梯度下降算法的简单原理,结合一个GitHub的项目

neural-networks-and-deep-learning,学习了代码

下面是在Python3中遇到的一些问题以及解决总结,因为GitHub上是用的Python2环境

算法代码下载

1,改变成自己的Python环境

2. importerror no module named cpickle
cPickle module in  Python2  has been replaced by an improved module pickle in Python3. So simply use pickle.
解决:
# import cPickle
import pickle

#training_data, validation_data, test_data = cPickle.load(f)
training_data, validation_data, test_data = pickle.load(f, encoding="bytes")


Try using list(zip(…) where you have zip(…) – Julien Jun 27 ‘16 at 4:02
根据代码进行修改,前缀list
tr_d, va_d, te_d = load_data()
    training_inputs = [np.reshape(x, ( 784 , 1 )) for x in tr_d[ 0 ]]
    training_results = [vectorized_result(y) for y in tr_d[ 1 ]]
    #training_data = zip (training_inputs, training_results)
    training_data = list(zip(training_inputs, training_results))
    validation_inputs = [np.reshape(x, ( 784 , 1 )) for x in va_d[ 0 ]]
    #validation_data = zip (validation_inputs, va_d[1])
    validation_data = list(zip(validation_inputs, va_d[ 1 ]))
    test_inputs = [np.reshape(x, ( 784 , 1 )) for x in te_d[ 0 ]]
    #test_data = zip (test_inputs, te_d[1])
    test_data = list(zip(test_inputs, te_d[ 1 ]))
    return (training_data, validation_data, test_data)

4,NameError: name 'xrange' is not defined
xrange( )函数时在python 2.x中的一个函数,在Python 3中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange( )

将network中的xrange换成range



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
到目前为止,人们提出了许多神经网络模型,其中应用最广泛的是前馈神经网络.早期前馈神经网络中只含有求和神经元,在处理复杂非线性问题时效率很低.后来,人们将求积神经元引入到前馈神经网络中,用以增加网络的非线性映射能力,提高网络的学习效率.这样的网络可以统称为高阶前馈神经网络.但是,如果只通过输入节点值的简单乘积构造求积神经元以增加网络的非线性映射能力,随着输入样本维数的增加,所需权值的数量呈指数阶增加,即出现“维数灾难”.Pi-Sigma 神经网络是1991 年Y.Shin提出的一种具有多项式乘积构造的求积神经元的高阶前馈神经网络.该网络既提高网络的非线性映射能力,又避免了“维数灾难”的出现.此后,为了提高该网络的应用能力,Y.Shin、A.J. Hussaina、C.K. Li 等又以Pi-Sigma 神经网络为模块构造了更复杂的网络结构,并在模式分类和函数逼近等问题中取得成功应用. 学者们对只含有求和神经元的前馈神经网络的收敛性、泛化能力等理论问题已有深入研究,而对含有求积神经元的高阶前馈神经网络的研究主要集中在实际应用上,相关理论方面的研究还很薄弱,仍存在许多有待解决的基本理论问题.因此,从理论上分析 Pi-Sigma 神经网络学习算法的学习能力和收敛性具有很重要的实际意义,这些问题的研究和解决将对 Pi-Sigma 神经网络的应用起到重要的促进作用. 梯度算法是一种简单又常用的神经网络训练算法,从样本的输入方式看,包括批处理和在线两种运行方式:从权值向量的更新方式来看,包括同步和异步两种更新方式.本论文主要研究用于训练 Pi-Sigma 神经网络的几种梯度学习算法的相关理论问题,包括学习效率、收敛性等.另外,在网络结构优化方面做了一些尝试. 本论文的结构及内容如下: 第一章回顾有关神经网络的一些背景知识. 第章指出随机单点在线梯度算法训练 Pi-Sigma 神经网络过程中因权值较小会降低网络收敛速度的问题,并从理论上分析了这种现象产生的原因及权值更新受影响的程度.同时,为解决该问题,给出了一种带惩罚项的随机单点在线梯度算法. 第三章讨论 Pi-Sigma 神经网络异步批处理梯度算法和带动量项的异步批处理梯度算法的收敛性问题.将动量项引入到训练 Pi-Sigma 神经网络的异步批处理梯度算法中,有效地改善了算法的学习效率,给出误差函数的单调性定理及该算法的弱收敛和强收敛性定理及证明,并通过计算机仿真实验验证理论分析的正确性. 第四章分析 Pi-Sigma 神经网络在线梯度算法的收敛性问题并给出收敛性结论. 第五章提出基于灰色关联分析的一种新的剪枝算法,并将其用于训练前馈神经网络 (包括多层前馈神经网络和 High-Order 神经网络).该算法运用狄色关联分析对比网络各节点输出值序列之问联系的紧密程度,实现网络结构的动态修剪.训练后的神经网络具有较合理的网络拓扑结构和较好的泛化能力.实例验证该算法的合理性、有效性.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值