大成带你了解一下tf.keras

Keras 概述

10min熟悉一下

导入tf.keras

tf.keras是TensorFlow对Keras API规范的实现。这是一个用于构建和训练模型的高级API,其中包括对TensorFlow特定功能的一流支持,例如eager execution,tf.data和估计器。tf.keras使TensorFlow更易于使用,而不牺牲灵活性和性能。

开始,导入tf.keras作为TensorFlow程序设置的一部分

import tensorflow as tf  //1
from tensorflow import keras //2

上面描述1行,后面都采用这种描述,请读者注意一下,

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

这个tf.keras最新的TensorFlow版本可能与PyPI的最新keras版本不同。tf.keras.version版本.
当保存模型的权重时,tf.keras默认为检查点格式。Pass save_format=“h5”以使用HDF5(或传递以.h5结尾的文件名)。

建立一个简单的模型

Sequential模型

在Keras中,您可以组装层来构建模型。模型通常是一个层次图。最常见的模型类型是一堆层:tf.keras.Sequential。

要构建一个简单、完全连接的网络(即多层感知器):

tf.keras.Sequential(
    layers=None, name=None
)

例如建立一个例子model

from tensorflow.keras import layers

model = tf.keras.Sequential() 
# 将具有64个单元的密集连接层添加到模型中,激活
model.add(layers.Dense(64, activation='relu'))
# 将具有64个单元的密集连接层添加到模型中,激活
model.add(layers.Dense(64, activation='relu'))

# 添加具有10个输出单位的输出层
model.add(layers.Dense(10))

配置图层

有很多tf.keras.层可用。大多数都有一些共同的构造函数参数:

激活:设置层的激活功能。此参数由内置函数的名称或可调用对象指定。默认情况下,不应用激活。
kernel_initializer和bias_initializer:创建层权重(kernel和bias)的初始化方案。此参数是名称或可调用对象。内核默认为“Glorot uniform”初始值设定项,而偏移默认为零。
核正则化和偏倚正则化:应用层的权重(核和偏倚)的正则化方案,如L1或L2正则化。默认情况下,不应用正则化。

# Create a relu layer:
layers.Dense(64, activation='relu')
# Or:
layers.Dense(64, activation=tf.nn.relu)

# A linear layer with L1 regularization of factor 0.01 applied to the kernel matrix:
layers.Dense(64, kernel_regularizer=tf.keras.regularizers.l1(0.01))

# A linear layer with L2 regularization of factor 0.01 applied to the bias vector:
layers.Dense(64, bias_regularizer=tf.keras.regularizers.l2(0.01))

# A linear layer with a kernel initialized to a random orthogonal matrix:
layers.Dense(64, kernel_initializer='orthogonal')

# A linear layer with a bias vector initialized to 2.0s:
layers.Dense(64, bias_initializer=tf.keras.initializers.Constant(2.0))

训练和执行

model = tf.keras.Sequential([
# Adds a densely-connected layer with 64 units to the model:
layers.Dense(64, activation='relu', input_shape=(32,)),
# Add another:
layers.Dense(64, activation='relu'),
# Add an output layer with 10 output units:
layers.Dense(10)])
#模型设置为优化器为adam,loss损失函数为交叉熵损失函数
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),
              loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

tf.keras.Model.compile有三个重要参数:

优化器:这个对象指定训练过程。从中传递it优化器实例tf.keras.优化器模块,例如tf.keras.优化器.亚当或tf.keras.优化器.中士。如果只想使用默认参数,还可以通过字符串(如“adam”或“sgd”)指定优化器。
损失:优化过程中最小化的函数。常见的选择包括均方误差(mse)、分类交叉熵和二元交叉熵。损失函数是通过名称指定的,或者通过从tf.keras.损失模块。
指标:用于监控培训。这些是来自tf.keras.度量模块。
此外,为了确保模型训练并急切地求值,您可以确保将run_ghtly=True作为要编译的参数传递。

或者定义为下面的

设置训练和lables

import numpy as np

data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))

model.fit(data, labels, epochs=10, batch_size=32)

tf.keras.Model.fit有三个重要论点:

epoch:训练分为时代。epoch是对整个输入数据的一次迭代(这是在较小的批处理中完成的)。
batch_size:当传递NumPy数据时,模型将数据分割成较小的批次,并在训练期间在这些批上迭代。此整数指定每个批次的大小。请注意,如果样本总数不能被批次大小整除,则最后一批可能会更小。
validation_data:在对模型进行原型设计时,您希望能够轻松地监视模型在某些验证数据上的性能。传递这个参数(输入和标签的元组)允许模型在每个历元结束时以推理模式显示传递数据的丢失和度量

import numpy as np

data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))

val_data = np.random.random((100, 32))
val_labels = np.random.random((100, 10))

model.fit(data, labels, epochs=10, batch_size=32,
          validation_data=(val_data, val_labels))

实例化数据集实例

tf.data.Dataset

使用Datasets API扩展到大型数据集或多设备培训。通过atf.data.Dataset数据集拟合方法的实例:

评估和预测

这个tf.keras.Model.evaluate和tf.keras.Model.predict方法可以使用NumPy数据和tf.data.Dataset数据集.

以下是如何评估所提供数据的推理模式损失和度量:

# With Numpy arrays
data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))

model.evaluate(data, labels, batch_size=32)

# With a Dataset
dataset = tf.data.Dataset.from_tensor_slices((data, labels))
dataset = dataset.batch(32)

model.evaluate(dataset)

猜你喜欢

转载自blog.csdn.net/keny88888/article/details/106628461