使用Python怎么实现一个神经网络神经网络算法

  介绍

本篇文章为大家展示了使用Python怎么实现一个神经网络神经网络算法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>运行环境

<李>

Pyhton3

<李>

numpy(科学计算包)

<李>

matplotlib(画图所需,不画图可不必)

<李>

sklearn(人工智能包,生成数据使用)

<强>计算过程

使用Python怎么实现一个神经网络神经网络算法

<强>输入样例

没有

<强>代码实现

#, - *安康;编码:utf-8  - * -   # ! python3   时间=__author__  & # 39; Wsine& # 39;   import  numpy  as  np   import  sklearn   import  sklearn.datasets   import  sklearn.linear_model   import  matplotlib.pyplot  as  plt   import  matplotlib   import 运营商   import 时间   def  createData(暗淡的=200,cnoise=0.20):   “才能”;“   输才能出:数据集,,对应的类别标签   ,,描述:生成一个数据集和对应的类别标签   “才能”;“   np.random.seed才能(0)   ,,X, y =, sklearn.datasets.make_moons(昏暗的,,噪音=cnoise)   plt.scatter才能(X (:,, 0), X:,, 1,, s=40岁,c=y),提出=plt.cm.Spectral)   #才能plt.show ()   return 才能,X,, y   def  plot_decision_boundary (pred_func, X,, y):   “才能”;“   输才能入:边界函数,,数据集,,类别标签   ,,描述:绘制决策边界(画图用)   “才能”;“   #,才能设置最小最大值,,加上一点外边界   x_min,才能,x_max =, X (:,, 0) .min(),安康;5,,X (:,, 0) .max (), + 5   y_min,才能,y_max =, X (:,, 1) .min(),安康;5,,X (:,, 1) .max (), + 5   h 才能=0.01   #才能,根据最小最大值和一个网格距离生成整个网格   ,,xx, 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,,提出=plt.cm.Spectral)   plt.scatter才能(X (:,, 0), X:,, 1,, c=y),提出=plt.cm.Spectral)   def  calculate_loss(模型,,X,, y):   “才能”;“   输才能入:训练模型,,数据集,,类别标签   输才能出:误判的概率   ,,描述:计算整个模型的性能   “才能”;“   W1,才能,b1,,那,,b2 =,模型[& # 39;W1 # 39;],,模型[& # 39;b1 # 39;],,模型[& # 39;W2 # 39;],,模型[& # 39;b2 # 39;】   #,才能正向传播来计算预测的分类值   时间=z1 才能;X.dot (W1), + b1   时间=a1 才能;np.tanh (z1)   时间=z2 才能;a1.dot (W2), +, b2   时间=exp_scores 才能;np.exp (z2)   probs 才能=,exp_scores /, np.sum (exp_scores,,轴=1,keepdims=True)   #才能,计算误判概率   时间=corect_logprobs 才能;-np.log(聚合氯化铝(范围(num_examples), y))   时间=data_loss 才能;np.sum (corect_logprobs)   #,才能加入正则项修正错误(可选)   data_loss 才能+=,reg_lambda/2, *, (np.sum (np.square (W1)), +, np.sum (np.square (W2)))   return 才能;1./num_examples  * data_loss   def 预测(模型,,x):   “才能”;“   输才能入:训练模型,,预测向量   输才能出:判决类别   ,,描述:预测类别属于(1)0,或是   “才能”;“   W1,才能,b1,,那,,b2 =,模型[& # 39;W1 # 39;],,模型[& # 39;b1 # 39;],,模型[& # 39;W2 # 39;],,模型[& # 39;b2 # 39;】   #,才能正向传播计算   时间=z1 才能;x.dot (W1), + b1   时间=a1 才能;np.tanh (z1)   时间=z2 才能;a1.dot (W2), +, b2   时间=exp_scores 才能;np.exp (z2)   probs 才能=,exp_scores /, np.sum (exp_scores,,轴=1,keepdims=True)   return 才能np.argmax(聚合氯化铝,,轴=1)   def  initParameter (X):   “才能”;“   输才能入:数据集   ,,描述:初始化神经网络算法的参数   ,,,,必须初始化为全局函数!   ,,,,这里需要手动设置!   “才能”;“   global  num_examples才能   num_examples 才能=,len (X), #,训练集的大小   global  nn_input_dim才能   时间=nn_input_dim 才能;2,#,输入层维数   global  nn_output_dim才能   时间=nn_output_dim 才能;2,#,输出层维数   #才能,梯度下降参数   global 才能ε   epsilon 才能;0.01=,,#,梯度下降学习步长   global  reg_lambda才能   reg_lambda 才能;0.01=,,#,修正的指数   def  build_model (nn_hdim, X,, y,, num_passes=20000,, print_loss=False):   “才能”;“   输才能入:数据集,,类别标签,,隐藏层层数,,迭代次数,,是否输出误判率   输才能出:神经网络模型   ,,描述:生成一个指定层数的神经网络模型   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Python怎么实现一个神经网络神经网络算法