python神经网络库 keras_用 Keras 编写你的第一个人工神经网络(Python)—— Jinkey 翻译...

译者:Jinkey(微信公众号 jinkey-love)

英文原版地址:点击跳转

教程概述

这里不需要编写太多的代码,不过我们将一步步慢慢地告诉你怎么以后怎么创建自己的模型。

教程将会涵盖以下步骤:

加载数据

定义模型

编译模型

训练模型

评估模型

结合所有步骤在一起

这个教程的前置条件:

有 python 2 或 3 的环境和编程基础

安装并配置好 Scipy 库(包括 Numpy )

你安装好 Keras 并且有一个后端(Theano or TensorFlow)

创建一个新的文件,命名为 keras_first_network.py ,然后将教程的代码一步步复制进去。

1. 加载数据

每当我们使用机器学习算法使用随机过程(如随机数),先设置随机数种子是一个好的习惯。

这样您就可以运行相同的代码一次又一次,得到相同的结果。如果你需要证明结果,使用随机数据比较算法或调试代码,这是很有用的。

你可以初始化随机数发生器及其种子,例如:

from keras.models import Sequential

from keras.layers import Dense

import numpy

# fix random seed for reproducibility

seed = 7

numpy.random.seed(seed)

现在我们可以加载我们的数据了。

在这个教程中,我们将使用皮马印第安人糖尿病数据集.这是UCI 机器学习数据库一个标准的机器学习数据集。它描述了病人医疗记录和他们是否在五年内发病。

因此,它是一个二分类问题(出现糖尿病为1, 否则为 0)。

所有描述病人的输入变量都是数值。这便于直接用于需要数值输入输出的神经网络, 适合我们第一个 Keras 神经网络。

下载数据集并且重命名为 pima-indians-diabetes.csv 放入 python 脚本所在的目录的 data/pima-indians-diabetes.csv。

你可以只直接使用 Numpy 库的 loadtxt() 方法加载数据,一共 8 个输出变量和 1 个输出变量(最后一列)。加载之后我们就可以把数据分离为 X(输出变量)和 Y(输出分类)

# load pima indians dataset

dataset = numpy.loadtxt("data/pima-indians-diabetes.csv", delimiter=",")

# split into input (X) and output (Y) variables

X = dataset[:, 0:8]

Y = dataset[:, 8]

我们已经初始化了我们对的随机数生成器来确保结果可复现, 也加载了数据。我们现在可以准备定义我们的神经网络模型了。

2. 定义模型

Keras 中的模型被定义为一系列的层。

我们实例化一个 Sequential 模型对象,每次添加一层知道我们对网络的拓扑结构满意。

第一件事情我们需要确保的是输出神经元的数量。这可以在模型创建的时候设置参数 input_dim 来定义,我们将这个参数设置为 8 对应 8 个输出变量。

我们怎么知道层的数量和他们的类型呢?

这是一个非常难回答的问题。这是启发式的,我们通过不断地试错找出最好的网络结构、一般来说,你需要足够大的网络去明白结构对于问题是否有用。

在这个例子中, 我们使用三层全连接的结构。

全连接层使用 Dense 定义。我们可以通过第一个参数定义层的神经元数量,第二个参数 init 定义权重的初始化方法, activation 参数定义激活函数。

在这个例子中, 我们把权重初始化成一个服从均匀分布的小随机数(init='uniform'),在0到0.05直接(这是 Keras 标准均匀分布权重初始值)。另一种传统的选择是‘normal’,会从高斯分布(正态分布)中产生一个小的随机数。

我们在前两层使用 (relu)[https://en.wikipedia.org/wiki/Rectifier_(neural_networks)] 激活函数, 在输出层使用 Sigmoid 函数。曾经 Sigmoid 和 tanh 激活函数是所有的层首选的。但时至今日, 使用 relu 激活函数可以达到更好的性能。我们在输出层使用 Sigmoid 函数来确保网络输出在 0 和 1 之间,

我们可以添加每一层将这些东西放到一起。第一层有 12 个神经元、8个输出变量。第二层有 8 个神经元和最后 1 个神经元的输出层用于预测类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值