学分高考 IT技术

人工智能AI培训_TensorFlow 2.0 keras快速入门

发布时间: 2022-03-17 18:12:01

人工智能AI培训_TensorFlow 2.0 keras快速入门

AI培训

1.导入tf.keras

tensorflow2推荐使用keras构建网络,常见的神经网络都包含在keras.layer中(最新的tf.keras的版本可能和keras不同)

tf.k​eras是 Kera​s API在TensorFlow 里的实现。这是一个高级API,用于构建和训练模型,同时兼容 TensorFlow 的绝大部分功能,比如,eager exec​ution, tf.​data模块及 Esti​mators。tf.ke​ras使得 TensorFlow 更容易使用,且保持 TF 的灵活性和性能。
首先需要在您的代码开始时导入tf.keras:

importtensorflowastf#tensorflow2.0 使用keras一般通过tensorflow.keras来使用,但是pycharm没有提示,原因是因为实际的keras路径放在tensorflow/python/keras,但是在程序中tensorflow有没有python这个目录,解决方法如下try:importtensorflow.kerasaskerasexcept:importtensorflow.python.kerasaskeras#这样pycharm既可以有提示,同时也不需要在程序运行的时候修改代码了。非常完美的解决手段,当然如果你不适用ide就不需要这些东西了。print(tf.__version__)print(keras.__version__)

tf.keras可以运行任何与Keras兼容的代码,但请记住:

最新TensorFlow版本中的tf.keras版本可能与PyPI的最新keras版本不同。检查tf.keras.version。

保存模型的权重时,tf.keras默认为checkp​oint 格式。通过save_format ='h5'使用HDF5。

2.构建简单模型

2.1.模型堆叠

最常见的模型类型是层的堆叠:keras.Sequential 模型

在Keras中,您可以组装图层来构建模型。模型(通常)是图层图。最常见的模型类型是一堆层:tf.keras.S​equential模型。构建一个简单的全连接网络(即多层感知器):

# Dense函数参数# units: 正整数,输出空间维度。# activation: 激活函数 (详见 activations)。若不指定,则不使用激活函数 (即,「线性」激活: a(x) = x)。# use_bias: 布尔值,该层是否使用偏置向量。# kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。# bias_initializer: 偏置向量的初始化器 (see initializers).# kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。# bias_regularizer: 运用到偏置向的的正则化函数 (详见 regularizer)。# activity_regularizer: 运用到层的输出的正则化函数 (它的 "activation")。(详见 regularizer)。# kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。# bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。
# Dropout参数解释:# inputs:必须,即输入数据。# rate:可选,默认为 0.5,即 dropout rate,如设置为 0.1,则意味着会丢弃 10% 的神经元。# noise_shape:可选,默认为 None,int32 类型的一维 Tensor,它代表了 dropout mask 的 shape,dropout mask 会与 inputs 相乘对 inputs 做转换,例如 inputs 的 shape 为 (batch_size,timesteps,features),但我们想要 droput - - mask 在所有 timesteps 都是相同的,我们可以设置 noise_shape=[batch_size,1,features]。# seed:可选,默认为 None,即产生随机熟的种子值。# training:可选,默认为 False,布尔类型,即代表了是否标志位 training 模式。# name:可选,默认为 None,dropout 层的名称。
model = keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28,28)),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10,activation='softmax')])

2.2.网络配置

tf.keras.layers中网络配置:

activation:设置层的激活函数。此参数由内置函数的名称指定,或指定为可调用对象。默认情况下,系统不会应用任何激活函数。

kernel_initializer 和 bias_initializer:创建层权重(核和偏差)的初始化方案。此参数是一个名称或可调用对象,默认为 “Glorot uniform” 初始化器。

kernel_regularizer 和 bias_regularizer:应用层权重(核和偏差)的正则化方案,例如 L1 或 L2 正则化。默认情况下,系统不会应用正则化函数。

keras.layers.Dense(32,activation='sigmoid')keras.layers.Dense(32,activation=tf.sigmoid)keras.layers.Dense(32,kernel_initializer='orthogonal')keras.layers.Dense(32,kernel_initializer=tf.keras.initializers.glorot_normal)keras.layers.Dense(32,kernel_regularizer=tf.keras.regularizers.l2(0.01))keras.layers.Dense(32,kernel_regularizer=tf.keras.regularizers.l1(0.01))

3.训练和评估

3.1.设置训练流程

构建模型后,通过调用compile方法配置其训练过程:

# compile函数:在模型准备好进行培训之前,它需要更多设置。这些是在模型的编译步骤中添加的:## 损失函数 - 这可以衡量模型在训练过程中的准确程度。我们希望最小化此功能,以便在正确的方向上“引导”模型。# 优化器 - 这是基于它看到的数据及其损失函数更新模型的方式。# 度量标准 - 用于监控培训和测试步骤。以下示例使用精度,即正确分类的图像的分数。
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])

compile有三个重要参数:

·optimizer:训练过程的优化方法。此参数通过tf.t​rain模块的优化方法的实例来指定,比如:AdamOpt​imizerRMSPropOptim​izerGradientDescentOptimizer

·loss:训练过程中使用的损失函数(通过最小化损失函数来训练模型)。常见的选择包括:均方误差(mse),categorical_crossentropy和binary_crossentropy。损失函数由名称或通过从tf.keras.losses模块传递可调用对象来指定。

·metrics:训练过程中,监测的指标(Used to monitor training)。
指定方法:名称 或 可调用对象 from thetf.keras​.metrics模块。
以下显示了配置培训模型的几个示例:

# Configure a model for mean-squared error regression.

model.compile(optimizer=tf.train.AdamOptimizer(0.01),

loss='mse',# mean squared error

metrics=['mae']) # mean absolute error

# Configure a model for categorical classification.

model.compile(optimizer=tf.train.RMSPropOptimizer(0.01),

loss=keras.losses.categorical_crossentropy,

metrics=[keras.metrics.categorical_accuracy])

3.2.compile函数

keras model.compile(loss='目标函数 ',optimize​r='adam',metrics=['accuracy'])

目标函数,或称损失函数,是网络中的性能函数,也是编译一个模型必须的两个参数之一。由于损失函数种类众多,下面以keras官网手册的为例。

在官方keras.io里面,有如下资料:

·mean_squared_error或mse

·mean_absolute_error或mae

·mean_absolute_percentage_error或mape

·mean_squared_logarithmic_error或msle

·squared_hinge

·hinge

·binary_crossentropy(亦称作对数损失,logloss)

·categorical_crossentropy:亦称作多类的对数损失,注意使用该目标函数时,需要将标签转化为形如(nb_samples,nb_classes)的二值序列

·sparse_categorical_crossentrop:如上,但接受稀疏标签。注意,使用该函数时仍然需要你的标签与输出值的维度相同,你可能需要在标签数据上增加一个维度:np.expand_dims(y,-1)

·kullback_leibler_divergence:从预测值概率分布Q到真值概率分布P的信息增益,用以度量两个分布的差异.

·cosine_proximity:即预测值与真实标签的余弦距离平均值的相反数

3.3.评估与预测

tf.keras.Model.e​valuatetf.keras.Model.predict方法能够使用 NumPy 数据 和tf.da​ta.Dataset数据。要评估所提供数据的推理模式损失和指标,并且作为NumPy数组,预测所提供数据的推断中最后一层的输出:

#训练和评估模型:model.fit(x_train,y_train,epochs=5)test_loss,test_acc = model.evaluate(x_test,y_test)print('Test accuracy:',test_acc)predictions = model.predict(x_test)print("==================")print(predictions)

3.4.完整代码

from__future__importabsolute_import,division,print_function,unicode_literalsimporttensorflowastf#tensorflow2.0 使用keras一般通过tensorflow.keras来使用,但是pycharm没有提示,原因是因为实际的keras路径放在tensorflow/python/keras,但是在程序中tensorflow有没有python这个目录,解决方法如下try:importtensorflow.kerasaskerasexcept:importtensorflow.python.kerasaskeras#加载并准备MNIST数据集,将样本从整数转换为浮点数mnist = keras.datasets.mnist(x_train,y_train),(x_test,y_test) = mnist.load_data()#将数据归一化,在训练网络之前,必须对数据进行预处理。如果您检查训练集中的第一个图像,您将看到像素值落在0到255的范围内# 在馈送到神经网络模型之前,我们将这些值缩放到0到1的范围。为此,将图像组件的数据类型从整数转换为float,并除以255.0。x_train,x_test = x_train / 255.0,x_test / 255.0
#通过堆叠图层构建tf.keras.Sequential模型。选择用于训练的优化器和损失函数:# 该网络中的第一层tf.keras.layers.Flatten将图像的格式从2d阵列(28乘28像素)转换为28 * 28 = 784像素的1d阵列。可以将此图层视为图像中未堆叠的像素行并将其排列。该层没有要学习的参数; 它只重新格式化数据。# 在像素被展平之后,网络由tf.keras.layers.Dense两层序列组成。这些是密集连接或完全连接的神经层。第一Dense层有128个节点(或神经元)。第二(和最后)层是10节点softmax层 - 这返回10个概率分数的数组,其总和为1.每个节点包含指示当前图像属于10个类之一的概率的分数。
# Dense函数参数# units: 正整数,输出空间维度。# activation: 激活函数 (详见 activations)。若不指定,则不使用激活函数 (即,「线性」激活: a(x) = x)。# use_bias: 布尔值,该层是否使用偏置向量。# kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。# bias_initializer: 偏置向量的初始化器 (see initializers).# kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。# bias_regularizer: 运用到偏置向的的正则化函数 (详见 regularizer)。# activity_regularizer: 运用到层的输出的正则化函数 (它的 "activation")。(详见 regularizer)。# kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。# bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。
# Dropout参数解释:# inputs:必须,即输入数据。# rate:可选,默认为 0.5,即 dropout rate,如设置为 0.1,则意味着会丢弃 10% 的神经元。# noise_shape:可选,默认为 None,int32 类型的一维 Tensor,它代表了 dropout mask 的 shape,dropout mask 会与 inputs 相乘对 inputs 做转换,例如 inputs 的 shape 为 (batch_size,timesteps,features),但我们想要 droput - - mask 在所有 timesteps 都是相同的,我们可以设置 noise_shape=[batch_size,1,features]。# seed:可选,默认为 None,即产生随机熟的种子值。# training:可选,默认为 False,布尔类型,即代表了是否标志位 training 模式。# name:可选,默认为 None,dropout 层的名称。
model = keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28,28)),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10,activation='softmax')])
# compile函数:在模型准备好进行培训之前,它需要更多设置。这些是在模型的编译步骤中添加的:## 损失函数 - 这可以衡量模型在训练过程中的准确程度。我们希望最小化此功能,以便在正确的方向上“引导”模型。# 优化器 - 这是基于它看到的数据及其损失函数更新模型的方式。# 度量标准 - 用于监控培训和测试步骤。以下示例使用精度,即正确分类的图像的分数。
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])#训练和评估模型:model.fit(x_train,y_train,epochs=5)test_loss,test_acc = model.evaluate(x_test,y_test)print('Test accuracy:',test_acc)predictions = model.predict(x_test)print("==================")print(predictions)

本实验利用网上已有的北京房价数据集预测了北京的房价,实现了TensorFlow的线性回归应用。

温馨提示:
本文【人工智能AI培训_TensorFlow 2.0 keras快速入门】由作者教培参考提供。该文观点仅代表作者本人,学分高考系信息发布平台,仅提供信息存储空间服务,若存在侵权问题,请及时联系管理员或作者进行删除。
我们采用的作品包括内容和图片部分来源于网络用户投稿,我们不确定投稿用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的权利,请联系我站将及时删除。
内容侵权、违法和不良信息举报
Copyright @ 2024 学分高考 All Rights Reserved 版权所有. 湘ICP备17021685号