项目作者: YC-wind

项目描述 :
简化了一下 api,方便修改
高级语言: Python
项目地址: git://github.com/YC-wind/XL-NET-Chinese-task.git
创建时间: 2019-08-23T13:11:16Z
项目社区:https://github.com/YC-wind/XL-NET-Chinese-task

开源协议:Apache License 2.0

下载


说明

感谢 ymcui/Chinese-PreTrained-XLNet 提供的中文预训练的模型。

训练起来, 非常慢,非常慢!!

修改的地方

  • 新增 component_xlnet_data_processor.py

数据预处理文件,将训练文件转化为 tf_record 格式。

ZC (Git Test)

  • 新增 component_xlnet_multi_class_train.py

多分类组件,接入 xl-net 的模型输出,后面 可以自己添加层(一般不需要)

有些 日志错误懒得改过来了。

训练效果

训练的日志见:xlnet.log

  1. 收敛也比较慢,相比于 bert,估计是层数太多了,要慢慢学,-_-

附录

  1. 注意, 使用 use_bfloat16 true 时,出现
  2. tensorflow.python.framework.errors_impl.NotFoundError: No registered 'Reciprocal' OpKernel for CPU devices compatible with node {{node ConstantFolding/foo/gradients/foo/Mean_1_grad/truediv_recip}} = Reciprocal[T=DT_BFLOAT16, _device="/job:localhost/replica:0/task:0/device:CPU:0"](foo/gradients/foo/Mean_1_grad/Const_1)
  3. (OpKernel was found, but attributes didn't match)
  4. . Registered: device='XLA_GPU'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_COMPLEX64, DT_INT64, DT_BFLOAT16, DT_HALF]
  5. device='XLA_CPU'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_COMPLEX64, DT_INT64, DT_HALF]
  6. device='XLA_CPU_JIT'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_COMPLEX64, DT_INT64, DT_HALF]
  7. device='XLA_GPU_JIT'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_COMPLEX64, DT_INT64, DT_BFLOAT16, DT_HALF]
  8. device='GPU'; T in [DT_INT64]
  9. device='GPU'; T in [DT_DOUBLE]
  10. device='GPU'; T in [DT_HALF]
  11. device='GPU'; T in [DT_FLOAT]
  12. device='CPU'; T in [DT_COMPLEX128]
  13. device='CPU'; T in [DT_COMPLEX64]
  14. device='CPU'; T in [DT_DOUBLE]
  15. device='CPU'; T in [DT_HALF]
  16. device='CPU'; T in [DT_FLOAT]
  17. stackoverflow 解释说,不支持(还以为可以使用 半精度加速,-_-)
  18. 估计需要自己动手魔改了,转化类型
  19. [v for v in tf.global_variables() if 'adam_v' not in v.name and 'adam_m' not in v.name]