手把手教你实现神经网络

教育行业A股IPO第一股(股票代码003032)

全国咨询/投诉热线:400-618-4000

In[1]:

In[2]:

#生成数据集并用plot画出np.random.seed(0)X,y=sklearn.datasets.make_moons(200,noise=0.20)plt.scatter(X[:,0],X[:,1],s=40,c=y,cmap=plt.cm.Spectral)

Out[2]:

这里为了演示,我们使用逻辑回归行分类。输入是数据集里的x,y坐标,输出是预测的类别(0或者1)。为了方便我们直接使用scikit-learn中的逻辑回归。

In[3]:

#训练逻辑回归分类器clf=sklearn.linear_model.LogisticRegressionCV(cv=5)clf.fit(X,y)

Out[3]:

In[4]:

#这是个帮助函数,这个函数的作用是用来画决策边界的,如果看不懂函数内容不用介意。defplot_decision_boundary(pred_func):#设置边界最大最小值x_min,x_max=X[:,0].min()-.5,X[:,0].max()+.5y_min,y_max=X[:,1].min()-.5,X[:,1].max()+.5h=0.01#生成一个点间网格,它们之间的距离为hxx,yy=np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))#预测Z=pred_func(np.c_[xx.ravel(),yy.ravel()])Z=Z.reshape(xx.shape)#绘制轮廓和训练示例plt.contourf(xx,yy,Z,cmap=plt.cm.Spectral)plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.Spectral)

In[5]:

plot_decision_boundary(lambdax:clf.predict(x))plt.title("LogisticRegression")

这个图显示了通过逻辑回归学习到的决策边界。这里的直线已经尽可能的把数据集分成两部分,但是分的效果还是不理想,还是有些分错类别的。

现在我们构建一个3层神经网络,其中包含一个输入层,一个隐藏层和一个输出层。输入层中的节点数由我们的数据的维数确定的,这里是2。输出层中的节点数由我们拥有的类别数量决定,这里也是2。因为我们只有两个类实际上只用一个输出节点可以预测0或1,但是有两个可以让网络更容易扩展到更多的类。网络的输入将是x和y坐标,其输出将是两个概率,一个用于类别0,一个用于类别1。神经网络如图所示:

我们可以选择隐藏层的维度也就是节点数。隐藏层的节点越多,得到的神经网络功能就越复杂。但更高的维度需要付出代价。首先,学习网络参数和预测就需要更多的计算量。同时更多参数也意味着我们得到的模型更容易过拟合。如何选择隐藏层的大小?虽然有一些指导方针,但实际上具体问题需要具体分析,稍后我们将改变隐藏层中的节点数量来查看它如何影响我们的输出。

现在我们把具体代码实现来,这里先定义一些后面求梯度会用到的参数:

In[6]:

num_examples=len(X)#训练集大小nn_input_dim=2#输入层维度nn_output_dim=2#输出层维度#梯度下降参数,这两个参数是为设定的超参数epsilon=0.01#梯度下降的学习率reg_lambda=0.01#正则化强度首先我们实现上面定义的损失函数,这里用它来评估我们的模型的好坏:

In[7]:

In[8]:

In[9]:

下面来看看如果我们训练隐藏层大小为3的网络会发生什么。

In[10]:

#隐藏层大小为3model=build_model(3,print_loss=True)#绘制决策边界plot_decision_boundary(lambdax:predict(model,x))plt.title("DecisionBoundaryforhiddenlayersize3")

Lossafteriteration0:0.432387Lossafteriteration1000:0.068947Lossafteriteration2000:0.068901Lossafteriteration3000:0.071218Lossafteriteration4000:0.071253Lossafteriteration5000:0.071278Lossafteriteration6000:0.071293Lossafteriteration7000:0.071303Lossafteriteration8000:0.071308Lossafteriteration9000:0.071312Lossafteriteration10000:0.071314Lossafteriteration11000:0.071315Lossafteriteration12000:0.071315Lossafteriteration13000:0.071316Lossafteriteration14000:0.071316Lossafteriteration15000:0.071316Lossafteriteration16000:0.071316Lossafteriteration17000:0.071316Lossafteriteration18000:0.071316Lossafteriteration19000:0.071316

这看起来很不错。我们的神经网络能够找到一个成功分离两个类别的决策边界。

在上面的示例中,我们设置了隐藏层大小3,接着看看改变隐藏层大小对结果的影响。

In[11]:

我们可以看到,隐藏层在低维度时可以很好地拟合数据的总体趋势,更高的维度容易过拟合。当隐藏层维度过大时,模型尝试着去“记住”数据的形状而不是拟合他们的一般形状。通常情况我们还需要一个单独的测试集来评估我们的模型,隐藏层维度较小的模型在这个测试集上的表现应该更好,因为这个模型更加通用。我们也可以通过更强的正则化来抵消过度拟合,但是选择一个合适的隐藏层大小是一个比较划算的解决方案。

THE END
1.神经网络的持续学习:在线学习与非监督学习在深度学习领域,神经网络的持续学习是一个重要的研究方向。在线学习和非监督学习是两种常见的持续学习方法。本文将从背景、核心概念、算法原理、最佳实践、应用场景、工具推荐等多个方面进行深入探讨。 1. 背景介绍 神经网络的持续学习是指在网络训练过程中,通过不断地接受新的数据和信号,使网络能够不断地更新和优化自https://blog.csdn.net/universsky2015/article/details/135782662
2.在线深度学习mob64ca12d6c78e的技术博客在这个代码示例中,我们首先利用make_classification生成样本数据,然后构建了一个简单的神经网络并进行了初始训练。与传统的训练模式不同,我们在最后通过简单地调用model.fit()方法更新模型,模拟了在线学习的过程。 甘特图和类图 为了更好地理解在线深度学习的过程,可以用甘特图展示不同阶段的任务安排,以下是一个简单的甘特https://blog.51cto.com/u_16213326/11689672
3.机器学习——神经网络与深度学习:从基础到应用随着新算法、新模型和新硬件的出现,深度学习的应用前景愈发广阔。同时,深度学习在可解释性、数据需求、模型偏见等方面也面临许多挑战。未来,随着技术的不断进步,神经网络和深度学习将为人类生活带来更多可能性。https://cloud.tencent.com/developer/article/2456527
4.BrilliantBrilliant是一个在线学习平台,提供Introduction to Neural Networks课程介绍神经网络知识,让学生理解神经网络的基础知识,学习构建和调节神经网络,并应用神经网络解决实际问题。 Introduction to Neural Networks是Brilliant平台上的一门神经网络入门课程。这门课程面向初学者,介绍神经网络的基本概念、模型与算法。学习者可以在这https://www.aizhinan.cn/tools/2320.html
5.在线网课学习课堂《神经网络理论及应用(北工商)》单元测试考核在线网课学习课堂《神经网络理论及应用(北工商)》单元测试考核答案.docx,注:不含主观题 第1题 判断题 (1分) 人工神经元是一个多输入、多输出的信息处理单元 第2题 判断题 (1分) 人工神经元数学模型决定该节点本身的信息处理能力 第3题 单选题 (1分) 人工神经网络的激活函数https://max.book118.com/html/2022/0429/8132040142004075.shtm
6.今我来思,堆栈泛化(StackedGeneralization)7. 其他, 在线学习, 神经网络,遗传学习, 群体智能 等: -在线学习 Online stacking (OS) Linear perceptron with online random tree Random bit regression (RBR) Vowpal Wabbit (VW) Follow the Regularized Leader (FTRL) -神经网络Artificial neural network (ANN) https://www.jianshu.com/p/46ccf40222d6
7.李凌轩2).矿山机械的常用零部件(齿轮箱、润滑系统、传动轴等)的故障在线诊断技术 3).客户端、控制中心、数据库系统、在线物联网络平台的界面开发及其应用软件的开发 4).基于各类神经网络技术、在线学习技术等的在线诊断的故障专家系统的研发 涉及的主要理论基础: http://kzgc.neuq.edu.cn/info/1022/1217.htm
8.ai笔记在线阅读 这些课程专为已有一定基础(基本的编程知识,熟悉Python、对机器学习有基本了解),想要尝试进入人工智能领域的计算机专业人士准备。介绍显示:“深度学习是科技业最热门的技能之一,本课程将帮你掌握深度学习。” 在这5堂课中,学生将可以学习到深度学习的基础,学会构建神经网络,并用在包括吴恩达本人在内的多位https://github.com/kevenlau/deeplearning_ai_books
9.《零基础学机器学习》(黄佳)简介书评在线阅读人工智能教程籍,深入浅出神经网络与深度学习入门,基于python框架算法,机器学习入门小白书,与小冰一起课堂培训丰富的实战案例赠送全书实例源代码、案例数据集。 作者:黄佳出版社:人民邮电出版社出版时间:2020年12月 手机专享价 ¥ 当当价降价通知 ¥85.30 http://product.dangdang.com/29159728.html
10.DeepLearningSpecialization(DeepLearning.AI)Coursera深度学习专业为您提供了一条通往人工智能世界的道路,帮助您获得提升职业生涯水平的知识和技能。在学习过程中,您还将获得来自行业和学术界深度学习专家的职业建议。 应用的学习项目 学习结束后,您将能够 - 构建和训练深度神经网络,实现矢量化神经网络,确定架构参数,并将 DL 应用于您的应用程序 - 使用最佳实践来训练https://www.coursera.org/specializations/deep-learning
11.深度学习与神经网络有什么区别?深度学习和神经网络是人工智能领域中的两个重要概念,它们在很多方面有着相似之处,但也存在一些区别。本文将从定义、结构、应用等方面来探讨深度学习与神经网络的区别。 定义 深度学习是一种基于人工神经网络的机器学习算法,在大量数据上训练多层神经网络模型,实现对复杂问题的高效处理。而神经网络则是一种模拟生物神经系https://www.cda.cn/bigdata/201326.html
12.Science:神经网络模型的特征学习机制澎湃号·湃客澎湃新闻神经网络一直在推动人工智能的突破,包括现在在金融、人力资源和医疗保健等各个领域中广泛使用的大语言模型。神经网络通过反向传播和梯度下降等方法,在输入数据上自动地“发现”有意义的模式或特征。揭秘特征学习的机制一直是悬而未决的问题,但这是提高神经网络性能和可解释性的关键。 https://www.thepaper.cn/newsDetail_forward_26894581
13.神经网络3神经网络的学习算法 4神经网络的应用领域 神经元模型 编辑本段 神经网络神经元是神经网络的基本单元,其被设计成类比人类神经元的构造和工作原理。神经元由三个部分组成:树突、细胞体和轴突。树突接受来自其他神经元的电信号,而细胞体会将这些信号进行加权和求和,判断是否要产生输出信号。如果细胞体的加权和大于一https://vebaike.com/doc-view-943.html