深入理解神经网络[Numpy](转)
使用诸如Keras、TensorFlow或PyTorch等高级框架,我们可以快速构建非常复杂的模型。这次我们将尝试利用我们的知识,只使用NumPy构建一个完全可操作的神经网络。最后,我们还将使用它来解决简单的分类问题,并将其与用Keras构建的机器学习模型进行性能比较。 导入库 import numpy as np from IPython.display import Image 网络架构 Figure 1. Example of dense neural network architec 在开始编程之前,让我们先停下来准备一个基本的路线图。我们的目标是创建一个程序,能够创建一个具有指定架构(层的数量和大小以及适当的激活函数)的紧密连接的神经网络。图1给出了这样一个网络的例子。最重要的是,我们必须能够训练我们的网络并利用它进行预测。 图2.神经网络蓝图 上图显示了在我们的神经网络训练过程中需要执行的操作。它还显示了在单个迭代的不同阶段,我们需要更新和读取多少参数。构建正确的数据结构并巧妙地管理其状态是我们任务中最困难的部分。 神经网络层的初始化 图3.第1层的权重矩阵W和偏置向量 b的尺寸 让我们从每一层的权重矩阵W和偏差向量b开始。在图3中,我已经准备了小的cheatsheet,这将帮助我们为这些系数标记适当的尺寸。上标[l]表示当前层的索引(从1开始计数),我假设描述NN架构的信息将以列表的形式传递给我们的程序。列表中的每个条目是一个字典描述一个网络层的基本参数:input_dim- 信号矢量的大小作为层的输入,output_dim- 在层输出时得到的激活向量的大小,activation- 在层内使用的激活函数。 NN_ARCHITECTURE = [ {“input_dim”: 2, “output_dim”: 25, “activation”: “relu”}, {“input_dim”: 25, “output_dim”: 50, “activation”: “relu”}, {“input_dim”: 50, “output_dim”: 50, “activation”: “relu”}, {“input_dim”: 50, “output_dim”: 25, “activation”: …