人工智能

导航菜单



当前位置: 首页  /  python  /  正文

使用keras和python的神经网络教程

阅读:9

使用keras和python的神经网络教程

深度学习

深度学习是人工智能最重要的部分,它需要大量的数据,并为任何问题提供解决方案。深度学习是机器学习的一部分,但由于高计算能力和数据的可用性,现在它在人工智能领域占有重要地位。

神经网络是一种受人脑工作启发而建立的数学模型。根据维基百科,Warren McCulloch和Walter Pitts(1943)基于数学和算法为神经网络创建了一个计算模型,称为阈值逻辑。该模型为神经网络研究划分为两种方法奠定了基础。一种方法专注于大脑中的生物过程,另一种专注于神经网络在人工智能中的应用。

简单神经网络

简单神经网络是一个简单的数学模型,它以Xn为输入,将输入与权重Wn相乘,再加上偏差b,从激活函数传递出去,输出Y,如下图所示。单层简单神经网络也称为感知器。

从上面的图中可以看出,激活函数是一个像sigmoid和relu这样的非线性函数,实现了非线性。例如,在sigmoid函数中,所有负值都被赋值为零。在神经网络中使用激活函数得到光滑损失函数的目的是损失函数必须是凸函数或凹函数,然后对其进行梯度下降。我们将在实现过程中讨论这个问题。

python实现

使用keras库很容易在python中实现神经网络。Keras是一个建立在tensorflow之上的python库,是一个非常强大的工具,用于执行Google开发的深度学习。我们将使用 Pima diabetes dataset(http://www.kankanyun.com/data/pima-indians-diabetes.data.csv)并构建一个神经网络,该网络将预测患者是否患有糖尿病。首先,使用pip安装keras和tensorflow。

现在我们将使用pandas加载数据并可视化前五行或记录。

#importing important libraries
from keras.models import Sequential
from keras.layers import Dense
import pandas as pd
import numpy as np
import numpy
#load and see first five rows of datasets
df = pd.read_csv('pima-indians-diabetes.data.csv', header=None)
df.head()

然后我们将选择因变量y和自变量X.在选择X和y之后,我们将分别缩放数据并将它们分成训练和测试集。此外,我们将对目标变量y执行one-hot编码。

#choosing X and y
X = df.drop(8, axis = 1)
y = df[8]
#scaling the data
from sklearn.preprocessing import scale
X = scale(X)
#spiltting data into train and test
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
#one hot encoding
from keras.utils import np_utils
y_train = np_utils.to_categorical(y_train)

在此之后,我们将转向使用keras设计和构建神经网络模型。这里我们使用一个带有12个神经元的输入层,一个带有8个神经元的隐藏层和一个带有2个神经元的输出层。隐藏层只不过是简单的层,它将输入层输出作为输入传递给下一层。这里我们使用两个激活函数relu和sigmoid。Sigmoid获取所有负值并将它们映射到零,并且relu也是类似的激活函数,其可以定义为y = max(0,x)。

#Defining and desining neural network model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(2, activation='sigmoid'))

现在我们将编译我们的神教网络模型并分配优化方法,它将为我们执行反向传播。反向传播只不过是它会更新权重以优化我们的损失函数。这里我们使用adam优化器来执行反向传播。此外,我们使用二元交叉熵作为我们的损失函数和准确度指标。准确度指标只是实际值和预测值之间的差异。

# Compiling model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

现在终于我们将训练我们的神经网络模型。在这里,我们使用150个epochs,如果你训练这个模型1000个epochs或更多,那么模型将变得更加准确。

# training model
model.fit(X_train, y_train, epochs=150, batch_size=10)

在训练模型之后,我们将使用准确度分数来预测和评估我们的深度学习模型。此外,我们将绘制损失函数,以查看模型是否正确收敛。如果图形得到更多的elbow形状,这意味着模型已经达到了最大的准确性,它不需要更多的训练。

#prediction and evalution
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
y_pred = np.argmax(y_pred, axis=1)
accuracy_score(y_test, y_pred)

0.7165354330708661

#plotting loss against no. of epochs
import matplotlib.pyplot as plt
plt.plot(model.history.epoch, model.history.history['loss'])
plt.xlabel('epochs')
plt.xlabel('loss')

目前,大多数使用的神经网络是CNN(卷积神经网络)和RNN(递归神经网络),它们分别专门用于计算机视觉和时序数据等顺序数据。这是我们使用keras对深度学习和神经网络的简单介绍。

标签

使用keraspython神经网络教程


相关文章列表

Python卷积神经网络图像分类教程:深度学习秘籍

Python卷积神经网络图像分类教程:深度学习秘籍

好的,这次我将使用python编写如何使用卷积神经网络(CNN)进行图像分类。我希望你事先已经阅读并理解了卷积神经网络(CNN)的基本概念,这里我只讨论步骤,而不讨论卷积神经网络(CNN)中使用的术语...


使用Keras打造Python人工神经网络

使用Keras打造Python人工神经网络

对于许多公司来说,留住客户是首要任务,这已不是什么秘密;获得新客户的成本可能是留住现有客户的几倍。此外,了解客户流失的原因并估计与单个客户相关的风险,都是设计数据驱动的保留策略的强大组成部分。一个客户...


「全面指南:利用AMD GPU与Keras高效训练神经网络」

「全面指南:利用AMD GPU与Keras高效训练神经网络」

本教程将解释如何使用单个或多个配置中的AMD GPU设置用于训练的神经网络环境。在软件方面:我们将使用Docker,在ROCm内核之上运行Keras(Tensorflow v1.12.0作为后端)。要...


Python网络编程教程:使用Python构建网络应用程序

Python网络编程教程:使用Python构建网络应用程序

网络编程是现代软件开发中不可或缺的一部分。Python作为一种简单易用且功能强大的编程语言,提供了许多用于构建网络应用程序的工具和库。在本教程中,我们将探索如何使用Python编写网络应用程序。 1...


使用Keras构建卷积神经网络实战,轻松识别猫咪

使用Keras构建卷积神经网络实战,轻松识别猫咪

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud作者介绍:Erik Reppel,coinbase公司程序员作者博客:https://hackernoon.com...


Python爬虫教程:学习如何使用Python进行网络爬取和数据抓取

Python爬虫教程:学习如何使用Python进行网络爬取和数据抓取

网络爬虫是一种自动获取互联网信息的程序。Python作为一门高级编程语言,具有简洁易学的特点,非常适合用于编写网络爬虫。在本教程中,我们将介绍如何使用Python进行网络爬取和数据抓取。 1. 爬虫...


友情链接