神经网络是一系列算法,旨在通过类似于人脑功能的过程来识别一组数据中的潜在关系。
Keras是一个用Python编写的开源库,用于推进和评估深度学习模型。 它使您可以用几行代码来定义和训练神经网络模型。在这篇文章中,我们将学习如何建立 一个 使用Keras神经网络。
在本文中,我们将学习如何使用Keras构建神经网络。
怎么做?
安装Keras:
要使用Keras构建神经网络,我们必须首先安装它。它提供了实用工具,使建立的复杂的过程, 一个 更容易的神经网络。
Tensorflow和Keras 在Ubuntu中使用以下命令实现:
$ pip install --no-cache-dir tensorflow-gpu == 1.7
最好安装与GPU兼容的版本,因为当神经网络在GPU上运行时,它们的工作速度会大大提高。因为Keras是用Python编写的高级神经网络API,所以它能够在TensorFLow,CNTK或Theano之上运行。进行此操作的想法是实现快速实验,可以按以下方式安装:
$ pip安装keras
在Keras建立我们的第一个模型
代码文件在GitHub中可作为 -Neural_networks_multiple_layers.ipynb获得。
表示可以依次调用以在其顶部添加其他层的模型。顺序方法使我们能够执行模型初始化练习。
从keras.models导入顺序
模型= Sequential()
向模型添加一个密集层,因为它可以确保模型中各个层之间的连接。我们将输入层连接到隐藏层的方法如下:
model.add(密集(3,激活='relu',input_shape =(1,)))
在使用前面的代码初始化的密集层中,确保了模型的输入形状。此外,将对每个输入(隐藏层中的三个单元)建立三个连接,并且在隐藏层中需要执行的激活是ReLu激活。
将隐藏层连接到输出层。
model.add(Dense(1,activation ='linear'))
在这个密集层中,我们不需要指定输入形状,因为模型已经可以从上一层推断出输入形状。同样,假设每个输出都是一维的,则我们的输出层具有一个单位,而我们执行的激活是线性激活。
model.summary()
模型摘要可以如下所示:
前面的输出确认从输入层到隐藏层的连接中总共有六个参数-三个权重和三个偏置项-我们有很多六个参数对应于三个隐藏单元。另外,三个权重和一个偏置项将隐藏层连接到输出层。
现在,我们将编译模型。这确保我们定义了损失函数和优化器,以减少损失函数和与优化器相对应的学习率。
从keras.optimizers导入sgd
sgd = sgd(LR = 0.01)
在前面的步骤中,很明显,优化器是随机梯度下降的,学习率为0.01。将预定义的优化器及其相应的学习率作为参数传递,并减小均方误差值:
model.compile(optimizer = sgd,loss ='mean_squared_error')
通过更新权重来拟合模型,以便更好地拟合。
model.fit(np.array(x),np.array(y),epochs = 1,batch_size = 4,详细= 1)
fit方法期望它接收两个NumPy数组:一个输入数组和相应的输出数组。请注意,历元表示遍历整个数据集的次数,batch_size表示在更新权重的迭代中需要考虑的数据点的数量。此外,详细指定输出更为详细,其中包含有关训练和测试数据集损失以及模型训练过程进度的信息。
提取重量值。权重值的显示顺序是通过调用模型顶部的weights方法获得的,如下所示:
模型权重
获得权重的顺序如下:
从前面的输出中,我们看到权重的顺序是density_1层(这是隐藏层的输入之间的连接)中的三个权重(内核)和三个偏置项,以及三个权重(内核)和一个偏置将隐藏层连接到density_2层(输出层)的术语。
现在我们了解了权重值的显示顺序,让我们提取这些权重的值:
model.get_weights()
请注意,权重以数组列表的形式显示,其中每个数组对应于model.weights输出中指定的值。
以上代码行的输出如下:
您应该注意到,此处观察的输出与我们手动构建神经网络时获得的输出匹配
使用predict方法预测一组新输入的输出:
x1 = [[5],[6]]
model.predict(np.array(x1))
请注意,x1是保存新示例集的值的变量,我们需要为其预测输出值。与fit方法类似,predict方法也希望将数组作为其输入。
前面代码的输出如下:
请注意,尽管前面的输出不正确,但运行100个纪元时的输出如下:
当我们运行更大的时期时,前面的输出将与预期的输出(10、12)匹配。
在上面的文章中,我们总结了如何在Keras的帮助下构建神经网络,并在参考文献的步骤中进行了说明。这是摘自“使用Keras编写的神经网络食谱”的片段,该片段涉及Keras中的CNN,RNN和LSTM等神经网络体系结构。它还可以帮助您发现设计强大的神经网络以解决实际问题的技巧。如果您对此感兴趣,并且希望从头开始学习有关多个高级神经网络的更多信息,那么本书可能是适合您的一本书。
关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!