Keras
文章平均质量分 86
CC‘s World
这个作者很懒,什么都没留下…
展开
-
【Keras】基于tf2.0+和tf.keras的Transformer实现
代码来自: Learning transferable visual models from natural language supervision该代码主要由有train.py、data_loader.py、model.py、utils.py和test.py组成,每一个python文件的作用如下:train.py:初始化DataLoader(来自于data_loader.py)并调用DataLoader的load()方法构建训练集和验证集;构建Transformer(来自model.py)的模型结原创 2022-05-20 16:42:41 · 3409 阅读 · 0 评论 -
【Keras】TensorFlow Hub 模型复用
在软件开发中,我们经常复用开源软件或者库,避免了相同功能的代码重复开发,减少了大量的重复劳动,也有效缩短了软件开发周期。代码复用,对软件产业的蓬勃发展,有着极大的助推作用。相应的,TF Hub 目的是为了更好的复用已训练好且经过充分验证的模型,可节省海量的训练时间和计算资源。这些预训练好的模型,可以进行直接部署,也可以进行迁移学习(Transfer Learning)。对个人开发者来说,TF Hub 是非常有意义的,他们可以快速复用像谷歌这样的大公司使用海量计算资源训练的模型,而他们个人去获取这些资源是很转载 2022-05-09 17:16:45 · 597 阅读 · 0 评论 -
【Keras】TensorFlow Serving
当我们将模型训练完毕后,往往需要将模型在生产环境中部署。最常见的方式,是在服务器上提供一个 API,即客户机向服务器的某个 API 发送特定格式的请求,服务器收到请求数据后通过模型进行计算,并返回结果。如果仅仅是做一个 Demo,不考虑高并发和性能问题,其实配合 Flask 等 Python 下的 Web 框架就能非常轻松地实现服务器 API。不过,如果是在真的实际生产环境中部署,这样的方式就显得力不从心了。这时,TensorFlow 为我们提供了 TensorFlow Serving 这一组件,能够帮助我原创 2022-05-09 17:04:47 · 324 阅读 · 0 评论 -
【Keras】TensorFlow模型导出
为了将训练好的机器学习模型部署到各个目标平台(如服务器、移动端、嵌入式设备和浏览器等),我们的第一步往往是将训练好的整个模型完整导出(序列化)为一系列标准格式的文件。在此基础上,我们才可以在不同的平台上使用相对应的部署工具来部署模型文件。TensorFlow 提供了统一模型导出格式 SavedModel,使得我们训练好的模型可以以这一格式为中介,在多种不同平台上部署,这是我们在 TensorFlow 2 中主要使用的导出格式。同时,基于历史原因,Keras 的 Sequential 和 Functional转载 2022-05-06 14:50:05 · 1402 阅读 · 0 评论 -
【Keras】使用 TPU 训练 TensorFlow 模型
一、TPU 简介TPU 代表 Tensor Processing Unit (张量处理单元) ,是由谷歌在 2016 年 5 月发布的为机器学习而构建的定制集成电路(ASIC),并为 TensorFlow 量身定制。早在 2015 年,谷歌大脑团队就成立了第一个 TPU 中心,为 Google Translation,Photos 和 Gmail 等产品提供支持。 为了使所有数据科学家和开发人员能够访问此技术,不久之后就发布了易于使用,可扩展且功能强大的基于云的 TPU,以便在 Google Cloud转载 2022-05-06 14:32:27 · 550 阅读 · 0 评论 -
【Keras】TensorFlow分布式训练
当我们拥有大量计算资源时,通过使用合适的分布式策略,我们可以充分利用这些计算资源,从而大幅压缩模型训练的时间。针对不同的使用场景,TensorFlow 在 tf.distribute.Strategy 中为我们提供了若干种分布式策略,使得我们能够更高效地训练模型。一、单机多卡训练: MirroredStrategytf.distribute.MirroredStrategy 是一种简单且高性能的,数据并行的同步式分布式策略,主要支持多个 GPU 在同一台主机上训练。使用这种策略时,我们只需实例化一个 M转载 2022-05-05 19:27:50 · 1260 阅读 · 1 评论 -
【Keras】tf.config:GPU 的使用与分配
一、指定当前程序使用的 GPU很多时候的场景是:实验室 / 公司研究组里有许多学生 / 研究员需要共同使用一台多 GPU 的工作站,而默认情况下 TensorFlow 会使用其所能够使用的所有 GPU,这时就需要合理分配显卡资源。首先,通过 tf.config.list_physical_devices ,我们可以获得当前主机上某种特定运算设备类型(如 GPU 或 CPU )的列表,例如,在一台具有 4 块 GPU 和一个 CPU 的工作站上运行以下代码:gpus = tf.config.list_p转载 2022-05-05 15:25:38 · 1536 阅读 · 0 评论 -
【Keras】tf.function :图执行模式
虽然默认的即时执行模式(Eager Execution)为我们带来了灵活及易调试的特性,但在特定的场合,例如追求高性能或部署模型时,我们依然希望使用 TensorFlow 1.X 中默认的图执行模式(Graph Execution),将模型转换为高效的 TensorFlow 图模型。此时,TensorFlow 2 为我们提供了 tf.function 模块,结合 AutoGraph 机制,使得我们仅需加入一个简单的 @tf.function 修饰符,就能轻松将模型以图执行模式运行。一、tf.functio转载 2022-05-05 15:11:04 · 365 阅读 · 0 评论 -
【Keras】tf.data :数据集的构建与预处理
很多时候,我们希望使用自己的数据集来训练模型。然而,面对一堆格式不一的原始数据文件,将其预处理并读入程序的过程往往十分繁琐,甚至比模型的设计还要耗费精力。比如,为了读入一批图像文件,我们可能需要纠结于 python 的各种图像处理包(比如 pillow ),自己设计 Batch 的生成方式,最后还可能在运行的效率上不尽如人意。为此,TensorFlow 提供了 tf.data 这一模块,包括了一套灵活的数据集构建 API,能够帮助我们快速、高效地构建数据输入的流水线,尤其适用于数据量巨大的场景。一、数据集转载 2022-05-05 11:26:45 · 1812 阅读 · 0 评论 -
【Keras】TensorBoard:训练过程可视化
有时,你希望查看模型训练过程中各个参数的变化情况(例如损失函数 loss 的值)。虽然可以通过命令行输出来查看,但有时显得不够直观。而 TensorBoard 就是一个能够帮助我们将训练过程可视化的工具。一、实时查看参数变化情况首先在代码目录下建立一个文件夹(如 ./tensorboard )存放 TensorBoard 的记录文件,并在代码中实例化一个记录器:summary_writer = tf.summary.create_file_writer('./tensorboard') # 参转载 2022-05-05 10:16:39 · 1187 阅读 · 0 评论 -
【Keras】tf.train.Checkpoint :变量的保存与恢复
TensorFlow 提供了 tf.train.Checkpoint 这一强大的变量保存与恢复类,可以使用其 save() 和 restore() 方法将 TensorFlow 中所有包含 Checkpointable State 的对象进行保存和恢复。具体而言,tf.keras.optimizer 、 tf.Variable 、 tf.keras.Layer 或者 tf.keras.Model 实例都可以被保存。其使用方法非常简单,我们首先声明一个 Checkpoint:checkpoint = tf.转载 2022-05-05 10:04:07 · 936 阅读 · 0 评论 -
【Keras】自定义层、损失函数和评估指标
我们不仅可以继承 tf.keras.Model 编写自己的模型类,也可以继承 tf.keras.layers.Layer 编写自己的层。1. 自定义层自定义层需要继承 tf.keras.layers.Layer 类,并重写 init 、 build 和 call 三个方法,如下所示:class MyLayer(tf.keras.layers.Layer): def __init__(self): super().__init__() # 初始化代码 d转载 2022-05-04 16:25:05 · 462 阅读 · 0 评论 -
【Keras】Keras Pipeline
之前的示例均使用了 Keras 的 Subclassing API 建立模型,即对 tf.keras.Model 类进行扩展以定义自己的新模型,同时手工编写了训练和评估模型的流程。这种方式灵活度高,且与其他流行的深度学习框架(如 PyTorch、Chainer)共通。不过在很多时候,我们只需要建立一个结构相对简单和典型的神经网络(比如上文中的 MLP 和 CNN),并使用常规的手段进行训练。这时,Keras 也给我们提供了另一套更为简单高效的内置方法来建立、训练和评估模型。一、Keras Sequenti转载 2022-05-04 16:19:02 · 165 阅读 · 0 评论 -
【Keras】循环神经网络(RNN)
循环神经网络(Recurrent Neural Network, RNN)是一种适宜于处理序列数据的神经网络,被广泛用于语言模型、文本生成、机器翻译等。这里,我们使用 RNN 来进行尼采风格文本的自动生成。这个任务的本质其实预测一段英文文本的接续字母的概率分布。比如,我们有以下句子:I am a studen这个句子(序列)一共有 13 个字符(包含空格)。当我们阅读到这个由 13 个字符组成的序列后,根据我们的经验,我们可以预测出下一个字符很大概率是 “t”。我们希望建立这样一个模型,逐个输入一转载 2022-05-04 16:08:09 · 955 阅读 · 0 评论 -
【Keras】卷积神经网络(CNN)
卷积神经网络的一个示例实现如下所示:class CNN(tf.keras.Model): def __init__(self): super().__init__() self.conv1 = tf.keras.layers.Conv2D( filters=32, # 卷积层神经元(卷积核)数目 kernel_size=[5, 5], # 感受野大小 paddin转载 2022-05-04 15:58:19 · 1426 阅读 · 0 评论 -
【Keras】基础示例:多层感知机(MLP)
从编写一个最简单的 多层感知机 (Multilayer Perceptron, MLP),或者说 “多层全连接神经网络” 开始,介绍 TensorFlow 的模型编写方式。在这一部分,我们依次进行以下步骤:使用 tf.keras.datasets 获得数据集并预处理使用 tf.keras.Model 和 tf.keras.layers 构建模型构建模型训练流程,使用 tf.keras.losses 计算损失函数,并使用 tf.keras.optimizer 优化模型构建模型评估流程,使用 tf.k转载 2022-05-04 15:50:19 · 1014 阅读 · 0 评论 -
【Keras】TensorFlow 模型建立与训练——模型(Model)与层(Layer)
在 TensorFlow 中,推荐使用 Keras( tf.keras )构建模型。Keras 是一个广为流行的高级神经网络 API,简单、快速而不失灵活性,现已得到 TensorFlow 的官方内置和全面支持。Keras 有两个重要的概念: 模型(Model) 和 层(Layer) 。层将各种计算流程和变量进行了封装(例如基本的全连接层,CNN 的卷积层、池化层等),而模型则将各种层进行组织和连接,并封装成一个整体,描述了如何将输入数据通过各种层以及运算而得到输出。在需要模型调用的时候,使用 y_pre转载 2022-05-04 15:24:07 · 1535 阅读 · 1 评论 -
【Keras】TensorFlow 基础
在 TensorFlow 1.X 版本中, 必须 在导入 TensorFlow 库后调用 tf.enable_eager_execution() 函数以启用即时执行模式。在 TensorFlow 2 中,即时执行模式将成为默认模式,无需额外调用 tf.enable_eager_execution() 函数(不过若要关闭即时执行模式,则需调用 tf.compat.v1.disable_eager_execution() 函数)。在机器学习中,我们经常需要计算函数的导数。TensorFlow 提供了强大的 自转载 2022-05-04 15:20:37 · 163 阅读 · 0 评论