如何用9行Python代码编写一个简易神经网络 Python网络编程基础 中文版下载地址

python\u7f51\u7edc\u7f16\u7a0b\u53ef\u4ee5\u7528\u6765\u505a\u4ec0\u4e48

\u4e0b\u9762\u662fPython\u7684\u5e94\u7528\u53ca\u5c97\u4f4d\u3002
\u7b2c\u4e00\u90e8\u5206\uff1a\u5404\u4e2a\u9886\u57df\u5e94\u7528\u7684\u8bed\u8a00\u3002

\u5927\u5bb6\u770b\u8fd9\u4e2a\u5185\u5bb9\uff0c\u5176\u5b9e\u4f60\u5f88\u660e\u663e\u53d1\u73b0\uff0c\u5176\u5b9e\u5404\u4e2a\u8bed\u8a00\u90fd\u6709\u4ed6\u7684\u7528\u5904\u3002\u6211\u4eec\u53ef\u4ee5\u8bf4Python\u662f\u5e94\u7528\u6700\u5e7f\u7684\u3002\u4f46\u662f\u6682\u65f6\u8fd8\u662f\u4e0d\u80fd\u8bf4\u5b83\u662f\u5168\u80fd\u7684\uff0c\u56e0\u4e3a\u4ed6\u4e5f\u6709\u5b83\u7684\u77ed\u677f\uff0c\u4f46\u662f\u5bf9\u4e8e\u4e00\u822c\u7684\u5c0f\u516c\u53f8\u548c\u5c0f\u9879\u76ee\u800c\u8a00\uff0c\u662f\u5f88\u96be\u5f97\u7684\u5168\u80fd\u3002
\u73b0\u5728\u6709\u4e2a\u5f88\u5947\u602a\u7684\u73b0\u8c61\uff0c\u5c31\u662f\u5927\u5bb6\u628aPython\u795e\u8bdd\u4e86\u3002Python\u4f5c\u4e3a\u4e00\u95e8\u8bed\u8a00\uff0c\u786e\u5b9e\u6709\u4ed6\u7684\u4f18\u52bf\u3002\u4f46\u662f\u5efa\u8bae\u5927\u5bb6\u5728\u5b66\u597d\u8fd9\u4e2a\u8bed\u8a00\u7684\u540c\u65f6\uff0c\u8981\u5b66\u7b2c\u4e8c\u95e8\u8bed\u8a00\uff0c\u8fd9\u6837\u672a\u6765\u5bf9\u5927\u5bb6\u6709\u597d\u7684\u53d1\u5c55\u3002
\u7b2c\u4e8c\u73af\u8282\uff1aPython\u5de5\u7a0b\u5e08\u5728\u4f01\u4e1a\u91cc\u9762\u7684\u5b9a\u4f4d\u662f\u4ec0\u4e48\uff1f

\u56db\u4e2a\u91cd\u8981\u7684\u5b9a\u4f4d\uff1a\u9a8c\u8bc1\u7b97\u6cd5\u3001\u5feb\u901f\u5f00\u53d1\u3001\u6d4b\u8bd5\u8fd0\u7ef4\u3001\u6570\u636e\u5206\u6790\u3002
1\u3001\u9a8c\u8bc1\u7b97\u6cd5\uff1a\u5c31\u662f\u5bf9\u6211\u4eec\u516c\u53f8\u4e00\u4e9b\u5e38\u89c1\u8bbe\u8ba1\u7b97\u6cd5\u6216\u8005\u516c\u5f0f\u7684\u9a8c\u8bc1\uff0c\u516c\u5f0f\u4ee3\u7801\u5316\u3002
2\u3001\u5feb\u901f\u5f00\u53d1\uff1a\u8fd9\u4e2a\u5927\u5bb6\u5e94\u8be5\u90fd\u6bd4\u8f83\u719f\u6089\uff0c\u5feb\u901f\u5f00\u53d1\uff0c\u5c31\u662f\u7528\u6210\u719f\u6846\u67b6\uff0c\u66f4\u5c11\u7684\u4ee3\u7801\u6765\u5f00\u53d1\u7f51\u7ad9\uff0cPython\u5728\u7f51\u7ad9\u524d\u540e\u53f0\u6709\u5927\u91cf\u7684\u6210\u719f\u7684\u6846\u67b6\uff0c\u5982django\uff0cflask\uff0cbottle\uff0ctornado\uff0cflask\u548cdjango\u7684\u4f7f\u7528\u8f83\u591a\uff0c\u56fd\u5185\u7528Python\u5f00\u53d1\u7684\u7f51\u7ad9\u6709\uff1a\u77e5\u4e4e\u3001\u8c46\u74e3\u3001\u6247\u8d1d\u3001\u817e\u8baf\u3001\u963f\u91cc\u5df4\u5df4\uff1b
3\u3001\u6d4b\u8bd5\u8fd0\u7ef4\uff1a\u7528python\u5b9e\u73b0\u7684\u6d4b\u8bd5\u5de5\u5177\u53ca\u8fc7\u7a0b\uff0c\u5305\u542b\u670d\u52a1\u5668\u7aef\u3001\u5ba2\u6237\u7aef\u3001web\u3001andriod\u3001client\u7aef\u7684\u81ea\u52a8\u5316\u6d4b\u8bd5\uff0c\u81ea\u52a8\u5316\u6027\u80fd\u6d4b\u8bd5\u7684\u6267\u884c\u3001\u76d1\u63a7\u548c\u5206\u6790\uff0c\u5e38\u7528selenium appium\u7b49\u6846\u67b6\u3002\u505a\u8fd0\u7ef4\u540c\u5b66\u5e94\u8be5\u6e05\u695a\uff0c\u5728Linux\u8fd0\u7ef4\u5de5\u4f5c\u4e2d\u65e5\u5e38\u64cd\u4f5c\u6db5\u76d6\u4e86\u76d1\u63a7\uff0c\u90e8\u7f72\uff0c\u7f51\u7edc\u914d\u7f6e\uff0c\u65e5\u5fd7\u5206\u6790\uff0c\u5b89\u5168\u68c0\u6d4b \u7b49\u7b49\u8bb8\u8bb8\u591a\u591a\u7684\u65b9\u9762\uff0c\u65e0\u6240\u4e0d\u5305\u3002python\u53ef\u4ee5\u5199\u5f88\u591a\u7684\u811a\u672c\uff0c\u628a\u201c\u64cd\u4f5c\u201d\u8fd9\u4e2a\u884c\u4e3a\u505a\u5230\u6781\u81f4\u3002\u4e0e\u6b64\u540c\u65f6\uff0cpython\u5728\u670d\u52a1\u5668\u7ba1\u7406\u5de5\u5177\u4e0a\u975e\u5e38\u4e30\u5bcc\uff0c\u914d\u7f6e\u7ba1\u7406(saltstack) \u6279\u91cf\u6267\u884c( fabric, saltstack) \u76d1\u63a7(Zenoss, nagios \u63d2\u4ef6) \u865a\u62df\u5316\u7ba1\u7406( python-libvirt) \u8fdb\u7a0b\u7ba1\u7406 (supervisor) \u4e91\u8ba1\u7b97(openstack) ...... \u8fd8\u6709\u5927\u90e8\u5206\u7cfb\u7edfC\u5e93\u90fd\u6709python\u7ed1\u5b9a\u3002
4\u3001\u6570\u636e\u5206\u6790\uff1aPython\u6709\u4e09\u5927\u795e\u5668\uff1anumpy,scipy,matplotlib,\u5176\u4e2dnumpy\u5f88\u591a\u5e95\u5c42\u4f7f\u7528C\u8bed\u8a00\u5b9e\u73b0\u7684\uff0c\u6240\u4ee5\u901f\u5ea6\u5f88\u5feb\uff0c\u7528\u5b83\u53c2\u52a0\u5404\u79cd\u6570\u5b66\u5efa\u6a21\u5927\u8d5b\uff0c\u5b8c\u5168\u53ef\u4ee5\u66ff\u4ee3r\u8bed\u8a00\u548cMATLAB\u3002spark\uff0cHadoop\u90fd\u5f00\u4e86Python\u7684\u63a5\u53e3\uff0c\u6240\u4ee5\u4f7f\u7528Python\u505a\u5927\u6570\u636e\u7684mapreduce\u4e5f\u975e\u5e38\u7b80\u5355\uff0c\u52a0\u4e0apy\u5bf9\u6570\u636e\u5e93\u652f\u6301\u90fd\u5f88\u597d\uff0c\u6216\u8005\u7c7b\u4f3csqlalchemy\u7684orm\u4e5f\u975e\u5e38\u5f3a\u5927\u597d\u7528\u3002
\u5728\u7ed3\u675f\u8fd9\u4e2a\u90e8\u5206\u4e4b\u524d\uff0c\u5927\u5bb6\u6709\u6ca1\u6709\u4e00\u4e2a\u7591\u95ee\uff1a\u4e3a\u4ec0\u4e48\u722c\u866b\u6ca1\u6709\u4e2d\u91cd\u70b9\u8bb2\uff1f
\u5176\u5b9e\u8fd9\u91cc\u7ed9\u5927\u5bb6\u91cd\u70b9\u8bf4\u4e00\u4e0b\uff0c\u5982\u679c\u4f60\u8981\u5b66\u597dPython\uff0c\u4ec5\u4ec5\u505c\u7559\u5728\u722c\u866b\u4e0a\uff0c\u8fd9\u4e2a\u662f\u5f88\u4e0d\u9760\u8c31\u7684\u3002Python \u5199\u722c\u866b\u7684\u6559\u7a0b\u7f51\u4e0a\u4e00\u6293\u4e00\u5927\u628a\uff0c\u636e\u5927\u5bb6\u6240\u77e5\u5f88\u591a\u521d\u5b66 Python \u7684\u4eba\u90fd\u662f\u4f7f\u7528\u5b83\u7f16\u5199\u722c\u866b\u7a0b\u5e8f\u3002\u5c0f\u5230\u6293\u53d6\u4e00\u4e2a\u5c0f\u9ec4\u56fe\u7f51\u7ad9\uff0c\u5927\u5230\u4e00\u4e2a\u4e92\u8054\u7f51\u516c\u53f8\u7684\u5546\u4e1a\u5e94\u7528\u3002\u901a\u8fc7 Python \u5165\u95e8\u722c\u866b\u6bd4\u8f83\u7b80\u5355\u6613\u5b66\uff0c\u4e0d\u9700\u8981\u5728\u4e00\u5f00\u59cb\u638c\u63e1\u592a\u591a\u592a\u57fa\u7840\u592a\u5e95\u5c42\u7684\u77e5\u8bc6\u5c31\u53ef\u4ee5\u5f88\u5feb\u4e0a\u624b\uff0c\u800c\u4e14\u5f88\u5feb\u53ef\u4ee5\u505a\u51fa\u6210\u679c\uff0c\u975e\u5e38\u9002\u5408\u5c0f\u767d\u4e00\u5f00\u59cb\u60f3\u505a\u51fa\u70b9\u770b\u5f97\u89c1\u7684\u4e1c\u897f\u7684\u6210\u5c31\u611f\u3002
\u9664\u4e86\u5165\u95e8\uff0c\u722c\u866b\u4e5f\u88ab\u5e7f\u6cdb\u5e94\u7528\u5230\u4e00\u4e9b\u9700\u8981\u6570\u636e\u7684\u516c\u53f8\u3001\u5e73\u53f0\u548c\u7ec4\u7ec7\uff0c\u901a\u8fc7\u6293\u53d6\u4e92\u8054\u7f51\u4e0a\u7684\u516c\u5f00\u6570\u636e\uff0c\u6765\u5b9e\u73b0\u4e00\u4e9b\u5546\u4e1a\u4ef7\u503c\u662f\u975e\u5e38\u5e38\u89c1\u7684\u505a\u6cd5\u3002
\u5f53\u7136\u8fd9\u4e9b\u9009\u624b\u7684\u722c\u866b\u5c31\u8981\u5389\u5bb3\u7684\u591a\u4e86\uff0c\u9700\u8981\u5904\u7406\u5305\u62ec\u8def\u7531\u3001\u5b58\u50a8\u3001\u5206\u5e03\u5f0f\u8ba1\u7b97\u7b49\u5f88\u591a\u95ee\u9898\uff0c\u4e0e\u5c0f\u767d\u7684\u6293\u9ec4\u56fe\u5c0f\u7a0b\u5e8f\uff0c\u590d\u6742\u5ea6\u5dee\u4e86\u5f88\u591a\u500d\u3002

Python\u7f51\u7edc\u7f16\u7a0b\u57fa\u7840\uff0c\u4e4b\u524d\u5b66\u4e60\u7684\u65f6\u5019\u4e0b\u7684\u3010\u76ae\u7279\u6536\u96c6\u8005\u3011\u91cc\u9762\u7684\uff0c\u8fd8\u6709\u6e90\u7801\uff0c\u51fd\u6570\uff0c\u6587\u4ef6\u64cd\u4f5c\u7b49\u3002
\u70b9\u51fb\u4e0b\u8f7d\u94fe\u63a5: https://pan.baidu.com/s/1YKqBGWi1cxemu_HZ0Ctb2w \u63d0\u53d6\u7801: ad4p

  学习人工智能时,我给自己定了一个目标--用Python写一个简单的神经网络。为了确保真得理解它,我要求自己不使用任何神经网络库,从头写起。多亏了Andrew Trask写得一篇精彩的博客,我做到了!下面贴出那九行代码:

  

  在这篇文章中,我将解释我是如何做得,以便你可以写出你自己的。我将会提供一个长点的但是更完美的源代码。

  首先,神经网络是什么?人脑由几千亿由突触相互连接的细胞(神经元)组成。突触传入足够的兴奋就会引起神经元的兴奋。这个过程被称为“思考”。

  

  我们可以在计算机上写一个神经网络来模拟这个过程。不需要在生物分子水平模拟人脑,只需模拟更高层级的规则。我们使用矩阵(二维数据表格)这一数学工具,并且为了简单明了,只模拟一个有3个输入和一个输出的神经元。

  我们将训练神经元解决下面的问题。前四个例子被称作训练集。你发现规律了吗?‘?’是0还是1?

  

  你可能发现了,输出总是等于输入中最左列的值。所以‘?’应该是1。

  训练过程

  但是如何使我们的神经元回答正确呢?赋予每个输入一个权重,可以是一个正的或负的数字。拥有较大正(或负)权重的输入将决定神经元的输出。首先设置每个权重的初始值为一个随机数字,然后开始训练过程:

  取一个训练样本的输入,使用权重调整它们,通过一个特殊的公式计算神经元的输出。

  计算误差,即神经元的输出与训练样本中的期待输出之间的差值。

  根据误差略微地调整权重。

  重复这个过程1万次。

  

  最终权重将会变为符合训练集的一个最优解。如果使用神经元考虑这种规律的一个新情形,它将会给出一个很棒的预测。

  这个过程就是back propagation。

  计算神经元输出的公式

  你可能会想,计算神经元输出的公式是什么?首先,计算神经元输入的加权和,即

  

  接着使之规范化,结果在0,1之间。为此使用一个数学函数--Sigmoid函数:

  

  Sigmoid函数的图形是一条“S”状的曲线。

  

  把第一个方程代入第二个,计算神经元输出的最终公式为:

  

  你可能注意到了,为了简单,我们没有引入最低兴奋阈值。

  调整权重的公式

  我们在训练时不断调整权重。但是怎么调整呢?可以使用“Error Weighted Derivative”公式:

  

  为什么使用这个公式?首先,我们想使调整和误差的大小成比例。其次,乘以输入(0或1),如果输入是0,权重就不会调整。最后,乘以Sigmoid曲线的斜率(图4)。为了理解最后一条,考虑这些:

  我们使用Sigmoid曲线计算神经元的输出

  如果输出是一个大的正(或负)数,这意味着神经元采用这种(或另一种)方式

  从图四可以看出,在较大数值处,Sigmoid曲线斜率小

  如果神经元认为当前权重是正确的,就不会对它进行很大调整。乘以Sigmoid曲线斜率便可以实现这一点

  Sigmoid曲线的斜率可以通过求导得到:

  

  把第二个等式代入第一个等式里,得到调整权重的最终公式:

  

  当然有其他公式,它们可以使神经元学习得更快,但是这个公式的优点是非常简单。

  构造Python代码

  虽然我们没有使用神经网络库,但是将导入Python数学库numpy里的4个方法。分别是:

  exp--自然指数

  array--创建矩阵

  dot--进行矩阵乘法

  random--产生随机数

  比如, 我们可以使用array()方法表示前面展示的训练集:

  

  “.T”方法用于矩阵转置(行变列)。所以,计算机这样存储数字:

  

  我觉得我们可以开始构建更优美的源代码了。给出这个源代码后,我会做一个总结。

  我对每一行源代码都添加了注释来解释所有内容。注意在每次迭代时,我们同时处理所有训练集数据。所以变量都是矩阵(二维数据表格)。下面是一个用Python写地完整的示例代码。

  我们做到了!我们用Python构建了一个简单的神经网络!

  首先神经网络对自己赋予随机权重,然后使用训练集训练自己。接着,它考虑一种新的情形[1, 0, 0]并且预测了0.99993704。正确答案是1。非常接近!

  传统计算机程序通常不会学习。而神经网络却能自己学习,适应并对新情形做出反应,这是多么神奇,就像人类一样。

  • 濡備綍鐢9琛孭ython浠g爜缂栧啓涓涓畝鏄撶缁忕綉缁?
    绛旓細鎴戝湪鑵捐浜戜笂绉熶簡涓鍙版湇鍔″櫒锛屾惌寤轰簡anaconda鐜锛岃杞戒簡jupyter锛岀劧鍚庡湪鎵嬫満绔墦寮鏈嶅姟鍣ㄤ笂鐨刯upyter锛岃繖鏍峰氨鍙互鑷敱鑷湪鐨鍐橮ython绋嬪簭浜 鎴戝ぇ鑷存妸娣卞害瀛︿範闇瑕佺殑搴撳叏瑁呬笂鍘讳簡锛岀劧鍚庣粡甯歌璁粌绁炵粡缃戠粶妯″瀷鐨勶紝鎴戜笂璇惧氨鍙互鐢ㄦ墜鏈虹湅璁粌鐨勮繘搴﹀拰璋冭妭鍙傛暟浜 ...
  • 鐢Python杈撳嚭9琛鍐呭,绗竴琛岃緭鍑1,绗簩琛岃緭鍑12,绗笁琛岃緭鍑123,浠ユ绫...
    绛旓細>>> s = ''>>> for i in range(1, 10): s += str(i) print(s) 112123123412345123456123456712345678123456789>>> 鏄繖鏍峰悧
  • 濡備綍鐢9琛孭ython浠g爜缂栧啓涓涓畝鏄撶缁忕綉缁
    绛旓細鏋勯Python浠g爜 铏界劧鎴戜滑娌℃湁浣跨敤绁炵粡缃戠粶搴擄紝浣嗘槸灏嗗鍏ython鏁板搴搉umpy閲岀殑4涓柟娉曘傚垎鍒槸锛歟xp锛嶏紞鑷劧鎸囨暟 array锛嶏紞鍒涘缓鐭╅樀 dot锛嶏紞杩涜鐭╅樀涔樻硶 random锛嶏紞浜х敓闅忔満鏁 姣斿锛 鎴戜滑鍙互浣跨敤array()鏂规硶琛ㄧず鍓嶉潰灞曠ず鐨勮缁冮泦锛氣.T鈥濇柟娉曠敤浜庣煩闃佃浆缃紙琛屽彉鍒楋級銆傛墍浠ワ紝璁$畻鏈鸿繖鏍峰瓨鍌ㄦ暟瀛楋細鎴戣寰...
  • Python绋嬪簭寮鍙戜箣绠鍗曞皬绋嬪簭瀹炰緥(3)-鎵撳嵃99涔樻硶鍙h瘈琛
    绛旓細瑕佹寜鏍煎紡鎺у埗杈撳嚭锛岄渶瀹氫箟2涓惊鐜紝鍏朵腑涓涓惊鐜紙鎴戜滑绉板叾涓哄寰幆锛屽湪鍏跺唴瀹氫箟鍙橀噺i锛夊祵濂楀彟涓涓惊鐜紙鎴戜滑绉板叾涓哄唴寰幆锛屽湪鍏跺唴瀹氫箟鍙橀噺j锛夛紝澶栧惊鐜紙鍙橀噺i锛夋帶鍒惰锛屽惊鐜鏁板ぇ浜庣瓑浜1涓斿皬浜10锛屽唴寰幆锛堝彉閲廽锛夋帶鍒跺垪锛屽惊鐜鏁板彇鍐充簬澶栧惊鐜彉閲廼鐨勫笺備笁銆佺▼搴婧愪唬鐮 !/usr/bin/python3.6 ...
  • 濡備綍浣跨敤python鐨matplotlib鐢绘寮﹀嚱鏁板浘鍍
    绛旓細浣跨敤python鐨matplotlib鐢绘寮﹀嚱鏁板浘鍍忥紝杩樿鐢ㄥ埌numpy搴擄紝浠g爜濡備笅9琛鎵绀猴細import numpy as np;from matplotlib import pyplot as plt;fig = plt.figure();ax2= fig.add_subplot(111);x=np.arange(0,100)/10;y=np.sin(x);ax2.plot(x,y);plt.savefig('sine.png');plt.show();
  • 銆python銆戣闂8銆9琛屼唬鐮閭d簺澶ф嫭鍙风殑鍚箟?
    绛旓細瀵筬ormat鍑芥暟鏍煎紡绗︿腑澶ф嫭鍙风殑瑙i噴瑙佸浘
  • python 涓轰粈涔堜細璺宠繃绗9琛鍐呭鐩存帴杈撳嚭缁撴灉?
    绛旓細涓嶆槸璺宠繃绗9琛锛屾槸浣犵鍗佽鍙堝x閲嶆柊杩涜浜嗚祴鍊硷紝鏇挎崲浜嗙9琛岀殑璧嬪笺
  • 璇烽棶杩欎釜Python浠g爜涓殑绗5,7,9琛屽浣鐞嗚В?璋㈣阿!
    绛旓細鎸夌収瀛楀吀鍊艰繘琛岄嗗簭鎺掑簭銆俧or k in range(len(ls)):zy,num=ls[k]杩欓噷灏辨槸閬嶅巻ls姣忛」鍏冪锛屽苟灏嗗厓绁栫涓涓厓绁栬祴鍊肩粰zy锛岀浜岄」璧嬪肩粰num銆俻rint("{}:{}".format(zy,num))濡傛灉鏄啓鍦ㄥ惊鐜唴锛岄偅zy,num=ls[k]杩欓噷鐨勬剰鎬濆氨鏄槸灏嗗瓧鍏镐腑閿煎鍒嗗埆淇濆瓨鍒伴亶鍘唞y鍜宯um涓紝骞舵墦鍗般
  • 濡備綍鐢≒ython鐨璇█琛ㄧず杈撳嚭鐨勮鏁版槸鍙橀噺n-1?
    绛旓細鍦Python涓紝鍙互浣跨敤鍙橀噺鍜屾暟瀛﹁繍绠楃鏉ヨ绠楄緭鍑虹殑琛屾暟銆傝〃绀鸿緭鍑虹殑琛屾暟鏄彉閲弉-1锛屽彲浠ヤ娇鐢ㄥ涓浠g爜杩涜琛ㄧず杈撳嚭锛歯 = 10 # 鍋囪n涓10 print(n - 1) # 杈撳嚭9锛屽嵆n-1鐨勫 鍦ㄨ繖涓緥瀛愪腑锛屾垜浠亣璁惧彉閲弉鐨勫间负10锛岄氳繃n-1鐨勬柟寮忚绠楀嚭杈撳嚭鐨勮鏁颁负9锛屼娇鐢╬rint()鍑芥暟杈撳嚭缁撴灉銆傚彲浠ユ牴鎹...
  • Python缂绋嬪簭?
    绛旓細"""Python涓節涔濅箻娉曞彛璇琛ㄥ彲浠鐢ㄨ鍜屽垪鐩镐箻鐨勬柟娉曞疄鐜帮紝鍏蜂綋浠g爜濡備笅锛"""for i in range(1, 10): #璁剧疆琛岀殑鏁伴噺 for j in range(1, i+1): #璁剧疆鍒楃殑鏁伴噺锛岀鍑犺灏辫緭鍑哄嚑鍒 print("%s * %s = %s" % (j, i, i*j), end=' ') #鐢╡nd=''...
  • 扩展阅读:python代码自动生成器 ... 最炫python表白代码 ... python编程一个最简单游戏 ... ai生成python代码 ... 简单代码大全 ... python编程动态爱心代码 ... 吓人的编程代码 ... 编程必背100个代码 ... 爱心代码编程python可复制 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网