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

介绍:

一)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使用示例

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

from tensorflow import keras
from keras.utils import plot_model
import numpy as np

x_train = np.random.rand(10000, 2)
y_train = 3 * x_train[:, 0] + 2 * x_train[:, 1] + 1
print(y_train.shape)

model = keras.models.Sequential()
# 使用add方法添加隐层
model.add(keras.layers.Dense(512, activation= 'sigmoid', input_dim= 2, use_bias= True))

model.add(keras.layers.Dense(1, activation= 'sigmoid', use_bias= True))
# 编译模型
model.compile(loss = keras.losses.mean_squared_error,
              optimizer= keras.optimizers.Adam(0.01),
              metrics= ['accuracy'])
# 训练模型
model.fit(x_train, y_train, batch_size= 10)
# 输出:
10/1000 [..............................] - ETA: 26s - loss: 17.7002 - acc: 0.0000e+00
690/1000 [===================>..........] - ETA: 0s - loss: 12.8620 - acc: 0.0000e+00
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,输入:

>>>pip install graphviz
>>>pip install pydot

使用keras的一般流程:

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

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

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

model.compile(loss = keras.losses.mean_squared_error,
              optimizer= keras.optimizers.Adam(0.01),
              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定义网络层的基本方法,其代码如下:

keras.layers.Dense(units,
                  activation=None,
                  use_bias=True,
                  kernel_initializer='glorot_uniform',
                  bias_initializer='zeros',
                  kernel_regularizer=None,
                  bias_regularizer=None,
                  activity_regularizer=None,
                  kernel_constraint=None,
                  bias_constraint=None)

 

参数说明如下:   

 units:
    该层有几个神经元

    activation:
    该层使用的激活函数

    use_bias:
    是否添加偏置项

    kernel_initializer:
    权重初始化方法

    bias_initializer:
    偏置值初始化方法

    kernel_regularizer:
    权重规范化函数

    bias_regularizer:
    偏置值规范化方法

    activity_regularizer:
    输出的规范化方法

    kernel_constraint:
    权重变化限制函数

    bias_constraint:
    偏置值变化限制函数

(二)使用示例

以下给出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数据集的模型

model = keras.models.Sequential()
model.add(keras.layers.Dense(784, input_dim=784, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
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)完整代码

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

from tensorflow import keras

# 定义模型
model = keras.Sequential()
model.add(keras.layers.Dense(784, input_dim=784, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(10, kernel_initializer='normal', activation= 'softmax'))

# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# 拟合模型
model.fit(x_train, y_train, epochs=10, batch_size=200, verbose=1)

  • 13
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Keras-tSNE 是一个基于 Keras 框架的 t-SNE (t-Distributed Stochastic Neighbor Embedding) 的实现。t-SNE 是一种降维算法,用于将高维数据映射到低维空间,以便更好地可视化和分析数据。 Keras-tSNE 提供了一个简单且易于使用的接口,可以很方便地将数据集传递给模型,并获取其在二维空间中的表示。使用 Keras-tSNE 的步骤如下: 1. 准备数据集:首先,需要准备一个数据集,可以是一个 NumPy 数组或 Pandas 数据帧。确保数据集的维度是二维或更高。 2. 安装 Keras-tSNE:在开始前,需要安装 Keras-tSNE 的库。可以通过使用 pip 命令进行安装。 3. 导入必要的库:在代码中,首先需要导入所需的库,如 KerasKeras-tSNE、NumPy 等。 4. 创建和训练模型:在代码中,根据需求创建一个 Keras 模型,可以是一个分类模型、回归模型或其他类型的模型。利用数据集对模型进行训练。 5. 使用 t-SNE 进行降维:在代码中导入 Keras-tSNE 库,使用 t-SNE 函数将数据集映射到二维空间。可以通过设置不同的参数来获取不同的映射结果。 6. 可视化降维结果:最后,将映射得到的结果在二维空间中进行可视化。可以使用 Matplotlib 或其他可视化库来实现。 Keras-tSNE 的使用非常简单,可以根据自己的需求对其进行定制和扩展。它提供了一个快速且高效的方法,用于将高维数据可视化,并帮助我们更好地理解和分析数据。无论是在聚类分析、特征提取还是数据可视化方面,Keras-tSNE 都是一个有用的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值