加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

100行Python代码,轻松搞定神经网络

发布时间:2019-05-08 00:46:08 所属栏目:建站 来源:eisenjulian 编译:周家乐、钱天培 用tensor
导读:大数据文摘出品 来历:eisenjulian 编译:周家乐、钱天培 用tensorflow,pytorch这类深度进修库来写一个神经收集早就不特别了。 然则,你知道怎么用python和numpy来优雅地搭一个神经收集嘛? 现现在,有多种深度进修框架可供选择,他们带有自动微分、基于图

此刻可以用一些数据测试下我们的代码了。

  1. X = np.random.randn(100, 10) 
  2. w = np.random.randn(10, 1) 
  3. b = np.random.randn(1) 
  4. Y = X @ W + B 
  5.  
  6. model = Linear(10, 1) 
  7. learner = Learner(model, mse_loss, SGDOptimizer(lr=0.05)) 
  8. learner.fit(X, Y, epochs=10, bs=10) 

我一共实习了10轮。

我们还能搜查学到的权重和真实的权重是否同等。

  1. print(np.linalg.norm(m.weights.tensor - W), (m.bias.tensor - B)[0]) 
  2. > 1.848553648022619e-05 5.69305886743976e-06 

好了,就这么简朴。让我们再试试非线性数据集,譬喻y=x1x2,而且再加上一个Sigmoid非线性层和另一个线性层让我们的模子更伟大些。像下面这样:

  1. X = np.random.randn(1000, 2) 
  2. Y = X[:, 0] * X[:, 1] 
  3.  
  4. losses1 = Learner( 
  5.     Sequential(Linear(2, 1)), 
  6.     mse_loss, 
  7.     SGDOptimizer(lr=0.01) 
  8. ).fit(X, Y, epochs=50, bs=50) 
  9.  
  10. losses2 = Learner( 
  11.     Sequential( 
  12.         Linear(2, 10), 
  13.         Sigmoid(), 
  14.         Linear(10, 1) 
  15.     ), 
  16.     mse_loss, 
  17.     SGDOptimizer(lr=0.3) 
  18. ).fit(X, Y, epochs=50, bs=50) 
  19.  
  20. plt.plot(losses1) 
  21. plt.plot(losses2) 
  22. plt.legend(['1 Layer', '2 Layers']) 
  23. plt.show() 

较量单一层vs两层模子在行使sigmoid激活函数的环境下的逊?ю失。

最后

但愿通过搭建这个简朴的神经收集,你已经把握了用python和numpy实现神经收集的根基思绪。

在这篇文章中,我们只界说了三种范例的层和一个丧失函数, 以是尚有许多工作可做,但根基道理都相似。感乐趣的同窗可以试实在现更伟大的神经收集哦!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读