当前位置:   article > 正文

【笔记】keras介绍;安装;使用keras的一般流程;Dense方法介绍;使用Sequential方法定义模型_怎么安装keras库

怎么安装keras库

介绍:

一)Keras是什么?

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验,能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。特别的,在TensorFlow2.0版本中,将对Keras框架进行进一步整合,官方也推荐大家使用Keras构建模型,所以我们很有必要了解并掌握Keras的基本结构和使用方法,以提升我们的工作和实验效率!
(二)Keras的优点

在Keras的官方文档中,开发组列出了Keras的四个优点:

    用户友好
    Keras 是为人类而不是为机器设计的 API。它把用户体验放在首要和中心位置。Keras 遵循减少认知困难的最佳实践:它提供一致且简单的 API,将常见用例所需的用户操作数量降至最低,并且在用户错误时提供清晰和可操作的反馈。

    模块化
    模型被理解为由独立的、完全可配置的模块构成的序列或图。这些模块可以以尽可能少的限制组装在一起。特别是神经网络层、损失函数、优化器、初始化方法、激活函数、正则化方法,它们都是可以结合起来构建新模型的模块。

    易扩展性
    新的模块是很容易添加的(作为新的类和函数),现有的模块已经提供了充足的示例。由于能够轻松地创建可以提高表现力的新模块,Keras 更加适合高级研究。

    基于 Python 实现
    Keras 没有特定格式的单独配置文件。模型定义在 Python 代码中,这些代码紧凑,易于调试,并且易于扩展。

(三)Keras使用示例

我们来定义一个含有一个隐层的网络:

  1. from tensorflow import keras
  2. from keras.utils import plot_model
  3. import numpy as np
  4. x_train = np.random.rand(10000, 2)
  5. y_train = 3 * x_train[:, 0] + 2 * x_train[:, 1] + 1
  6. print(y_train.shape)
  7. model = keras.models.Sequential()
  8. # 使用add方法添加隐层
  9. model.add(keras.layers.Dense(512, activation= 'sigmoid', input_dim= 2, use_bias= True))
  10. model.add(keras.layers.Dense(1, activation= 'sigmoid', use_bias= True))
  11. # 编译模型
  12. model.compile(loss = keras.losses.mean_squared_error,
  13. optimizer= keras.optimizers.Adam(0.01),
  14. metrics= ['accuracy'])
  15. # 训练模型
  16. model.fit(x_train, y_train, batch_size= 10)
  17. # 输出:
  18. 10/1000 [..............................] - ETA: 26s - loss: 17.7002 - acc: 0.0000e+00
  19. 690/1000 [===================>..........] - ETA: 0s - loss: 12.8620 - acc: 0.0000e+00
  20. 1000/1000 [==============================] - 0s 336us/step - loss: 11.8523 - acc: 0.0000e+00

可以看出,相较于TensorFlow基础API,使用Keras构建模型更加快捷、高效
 

安装:

(一)安装TensorFlow

Keras需要TensorFlow作为后端, 所以我们要首先确认是否安装了TensorFlow,打开Anaconda Prompt,输入:

>>>pip install tensorflow

(二)使用pip安装

打开Anaconda Prompt,输入:

>>>pip install keras

等待下载安装即可
(三)使用git安装

打开Anaconda Prompt,输入:

>>>git clone https://github.com/keras-team/keras.git

使用此方法的前提是你已经安装了git工具
(四)安装h5py

此组件的目的是让我们可以保存Keras的模型,打开Anaconda Prompt,输入:

>>>pip install h5py

(五)安装graphviz和pydot

这两个组件的目的是为了可视化Keras的网络结构,之后我们会用到,打开Anaconda Prompt,输入:

  1. >>>pip install graphviz
  2. >>>pip install pydot

使用keras的一般流程:

  1. # 实例化一个次序模型
  2. model = keras.models.Sequential()
  3. # 使用model.add方法添加隐层
  4. model.add(···)
  5. model.add(···)

具体如何定义一个隐层,我们会在下节讲到
(3)编译模型

在我们定义完模型后,需要使用complie方法对其进行编译:

  1. model.compile(loss = keras.losses.mean_squared_error,
  2. optimizer= keras.optimizers.Adam(0.01),
  3. metrics= ['accuracy'])

在编译操作中,我们需要定义模型使用的优化方法,损失函数,评估模型的指标等
(4)训练模型

我们使用model.fit()方法来训练模型,将训练数据的特征和标签导入:

model.fit(x_train, y_train, batch_size= 10, epochs = 5)

在这里可以指定批处理数、训练的世代数等参数
(5)评估模型

使用model.evaluate()方法来评估模型,如下所示:

model.evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)

同样可以指定批处理数等参数
(6)保存模型

模型训练完成之后,我们使用model.save()方法来保存模型

model.save(/model.h5)

最终模型会被保存为h5格式的文件
 

 Dense方法介绍:

(一)keras.layers.Dense方法

在开始定义模型之前,我们有必要对Dense方法进行详细地了解,因为它是Keras定义网络层的基本方法,其代码如下:

  1. keras.layers.Dense(units,
  2. activation=None,
  3. use_bias=True,
  4. kernel_initializer='glorot_uniform',
  5. bias_initializer='zeros',
  6. kernel_regularizer=None,
  7. bias_regularizer=None,
  8. activity_regularizer=None,
  9. kernel_constraint=None,
  10. bias_constraint=None)

 

参数说明如下:   

  1. units:
  2. 该层有几个神经元
  3. activation:
  4. 该层使用的激活函数
  5. use_bias:
  6. 是否添加偏置项
  7. kernel_initializer:
  8. 权重初始化方法
  9. bias_initializer:
  10. 偏置值初始化方法
  11. kernel_regularizer:
  12. 权重规范化函数
  13. bias_regularizer:
  14. 偏置值规范化方法
  15. activity_regularizer:
  16. 输出的规范化方法
  17. kernel_constraint:
  18. 权重变化限制函数
  19. bias_constraint:
  20. 偏置值变化限制函数

(二)使用示例

以下给出Dense方法的使用示例:

keras.layers.Dense(512, activation= 'sigmoid', input_dim= 2, use_bias= True)

这里定义了一个有512个节点,使用sigmoid激活函数的神经层,注意定义第一层的时候需要制定数据输入的形状,即input_dim,这样才能让数据正常喂进网络!
 

Sequential方法定义模型:

 

(二)模型实现
(1)导入类库

from tensorflow import keras

   

(2)模型定义

细心的朋友可能已经发现,这是用来识别MNIST数据集的模型

  1. model = keras.models.Sequential()
  2. model.add(keras.layers.Dense(784, input_dim=784, kernel_initializer='normal', activation= 'tanh'))
  3. model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
  4. model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
  5. model.add(keras.layers.Dense(10, kernel_initializer='normal', activation= 'softmax'))

 

(3)模型编译

使用交叉熵作为损失函数,使用Adam优化算法:

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

(4)模型训练

model.fit(x_train, y_train, epochs=10, batch_size=200, verbose=1)

  

(5)模型保存

model.save('/model.h5')

(6)完整代码

输入数据即可开始训练,注意这里的代码没有输入数据的操作!仅提供设计思路。

  1. from tensorflow import keras
  2. # 定义模型
  3. model = keras.Sequential()
  4. model.add(keras.layers.Dense(784, input_dim=784, kernel_initializer='normal', activation= 'tanh'))
  5. model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
  6. model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
  7. model.add(keras.layers.Dense(10, kernel_initializer='normal', activation= 'softmax'))
  8. # 编译模型
  9. model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  10. # 拟合模型
  11. model.fit(x_train, y_train, epochs=10, batch_size=200, verbose=1)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/978641
推荐阅读
相关标签
  

闽ICP备14008679号