数据准备

Trax中没有写好的数据数据预处理脚本,所以要自己写数据预处理的过程,这里我就直接使用tensorflow_official_nlp_transformer使用示例中生成TTRecoard数据

# 获取训练语料
batch_size = 8
max_length = 100
static_batch = True
model_dir = './data_dir/trax_nlp/train_dir/'
_READ_RECORD_BUFFER = 8*1000*1000def _load_records(filename):"""Read file and return a dataset of tf.Examples."""return tf.data.TFRecordDataset(filename, buffer_size=_READ_RECORD_BUFFER)def _parse_example(serialized_example):"""Return inputs and targets Tensors from a serialized tf.Example."""data_fields = {"inputs": tf.io.VarLenFeature(tf.int64),"targets": tf.io.VarLenFeature(tf.int64)}parsed = tf.io.parse_single_example(serialized_example, data_fields)inputs = tf.sparse.to_dense(parsed["inputs"])targets = tf.sparse.to_dense(parsed["targets"])return inputs, targets# 获取训练数据
file_pattern = os.path.join(model_dir, "*train*")
dataset = tf.data.Dataset.list_files(file_pattern, shuffle=True)
dataset = dataset.interleave(_load_records,cycle_length=2)
dataset = dataset.map(_parse_example)# padding、切分batch
dataset = dataset.padded_batch(batch_size, ([max_length], [max_length]), drop_remainder=True)dataset = dataset.repeat(2)# 转化为Trax.supervised.Trainer的输入格式
def copy_task():for x, y in dataset:yield (x.numpy(), y.numpy())
copy_inputs = trax.supervised.Inputs(lambda _: copy_task())

模型构建

# Transformer
def transformer(mode):return trax.models.Transformer(   # You can try trax_models.ReformerLM too.d_model=512, d_ff=2048, n_encoder_layers=6, n_decoder_layers=6, input_vocab_size=1700, mode=mode)# Train model with Trainer.
output_dir = os.path.expanduser('./train_dir/')trainer = trax.supervised.Trainer(model=transformer,loss_fn=trax.layers.CrossEntropyLoss, # github上已更新为CrossEntropyLoss()optimizer=trax.optimizers.Adafactor,  # Change optimizer params here.lr_schedule=trax.lr.MultifactorSchedule,  # Change lr schedule here.inputs=copy_inputs,output_dir=output_dir,has_weights=False)  # github上这个参数已去掉

模型训练

# 示例,简单训练一下
n_epochs  = 3
train_steps = 100
eval_steps = 2
for _ in range(n_epochs):trainer.train_epoch(train_steps, eval_steps)

训练过程见下图,从图中可以看到模型首次编译非常非常耗时,这还是在vocab_size很小(1700)的情况下,正常3W+的词汇表耗时更长,

模型预测

稍后更新…

tensorflow_Trax_transformer使用示例相关推荐

  1. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  2. CPU Cache原理与示例

    CPU Cache原理与示例 基础知识 现在的 CPU 多核技术,都会有几级缓存,老的 CPU 会有两级内存(L1 和 L2),新的CPU会有三级内存(L1,L2,L3 ),如下图所示: 其中:  ...

  3. 编译器 llvm clang 源码转换示例

    编译器 llvm clang 源码转换示例 从git获取llvm项目的源码方式: git clone https://github.com/llvm/llvm-project.git 下载源码后,进入 ...

  4. Cache Memory技术示例

    Cache Memory技术示例 为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么? 为什么需要cache memory 先思考第一个问题:程序是如何运 ...

  5. Swift与LLVM-Clang原理与示例

    Swift与LLVM-Clang原理与示例 LLVM 学习 从 简单汇编基础 到 Swift 不简单的 a + 1 作为iOS开发,程序崩溃犹如家常便饭,秉着没有崩溃也要制造崩溃的原则 每天都吃的很饱 ...

  6. C语言与OpenCL的编程示例比较

    C语言与OpenCL的编程示例比较 OpenCL支持数据并行,任务并行编程,同时支持两种模式的混合.对于同步 OpenCL支持同一工作组内工作项的同步和命令队列中处于同一个上下文中的 命令的同步. 在 ...

  7. OpenCL框架与示例

    OpenCL框架与示例 下面的图简单说明了OpenCL的编程框架,图是用的GPU,其他类似: 名词的概念: Platform (平台):主机加上OpenCL框架管理下的若干设备构成了这个平台,通过这个 ...

  8. ONNX MLIR应用示例(含源码链接)

    ONNX MLIR应用示例(含源码链接) 开放式神经网络交换在MLIR中的实现 (http://onnx.ai/onnx-mlir/). Prebuilt Containers 开始使用ONNX-ML ...

  9. TVM apps extension示例扩展库

    TVM apps extension示例扩展库 此文件夹包含TVM的示例扩展库.演示了其它库如何在C++和Python API中扩展TVM. 该库扩展了TVM的功能. python模块加载新的共享库, ...

最新文章

  1. Nature微生物多样性驱动了细菌以CRISPR系统抵御噬菌体
  2. webpack打包HTML配置自动,十三、HtmlWebpackPlugin的使用 ------- 2019-04-25
  3. 【原创】Android VMP加壳 POC
  4. 云炬随笔20180607
  5. 《精通并发与Netty》学习笔记(02 - 服务端程序编写)
  6. 网络管理与维护作业2
  7. openLdap安装教程
  8. java 8下载_java8下载-java8 64位官方版下载最新免费版-乡巴佬
  9. 分享一款Web压力测试工具Pylot
  10. 计算机阵列除法器原理,并行除法器 ,并行除法器结构原理是什么?
  11. 滤波电容值得选取-ESR
  12. 【第二届青训营-寒假前端场】- 「小游戏开发」笔记
  13. 三星在中国一面撤资,一面增资是为何?
  14. ap导入 ebs oracle_Oracle EBS Interface/API(1)--AP Invoice费用报表类型导入
  15. 微信小程序自动保留空格换行
  16. 刷表法 和 填表法(DP)
  17. 如何将本地项目推送到gitee仓库
  18. 2016秋季找工作纪实
  19. MATLAB怎么证明平衡点的稳定性,题目是这样的,没有解题思路
  20. Picasa的使用想法及对其他几个看图软件的粗略考察

热门文章

  1. 【转】分享上大学后养成的好习惯
  2. jq点击事件累加问题/click弹出事件执行两次
  3. 2021ACL 命名实体识别论文汇总
  4. python练手项目:2048实现与总结
  5. 用 pyfolio 进行量化交易回测
  6. lldb android studio,Android Studio22-NDK-LLDB调试
  7. 【工具】vscode注释插件koro1FileHeader
  8. 嵌入式系统开发笔记85:Modbus释疑
  9. NET程序员讨论技术群
  10. 人工神经网络——感知器介绍