美文网首页
bert-as-service输出分类结果

bert-as-service输出分类结果

作者: 此番风景 | 来源:发表于2019-05-14 22:07 被阅读0次

bert-as-service: Mapping a variable-length sentence to a fixed-length vector using BERT model

默认情况下bert-as-service只提供固定长度的特征向量,如果想要直接获取分类预测结果呢?

bert提供了的run_classifier.py 以训练分类模型,同时bert提供了离线评估的方法。

一些可能的部署思路

  • bert基于tensorflow实现,可以参考tensorflow-serving对外提供部署服务
  • 参考bert代码修改离线接口为在线推断,基于flask/django提供部署服务
  • 修改bert-as-service提供高效在线预测服务

bert-as-service的强大可以参考:Serving Google BERT in Production using Tensorflow and ZeroMQ

修改bert-as-service提供分类预测

思路:https://github.com/hanxiao/bert-as-service/issues/213

bert-as-service 默认情况下,不会加载分类层

  1. 加载模型的同时加载分类层的权重和bias
  2. 添加分类层

graph.py#L79中添加

            if args.pooling_strategy == PoolingStrategy.CLASSIFICATION:
                 hidden_size = 768
                 output_weights = tf.get_variable(
                     "output_weights", [args.num_labels, hidden_size],
                     )

                  output_bias = tf.get_variable(
                     "output_bias", [args.num_labels])

              tvars = tf.trainable_variables()                  

注意:在加载权重和bias的时候不要定义初始化方法,否则会从初始化方法进行加载,而不是微调模型。

graph.py#L127添加

                elif args.pooling_strategy == PoolingStrategy.CLASSIFICATION:
                     pooled = tf.squeeze(encoder_layer[:, 0:1, :], axis=1)
                     logits = tf.matmul(pooled, output_weights, transpose_b=True)
                     logits = tf.nn.bias_add(logits, output_bias)
                     pooled = tf.nn.softmax(logits, axis=-1)

具体代码github

相关文章

  • bert-as-service输出分类结果

    bert-as-service: Mapping a variable-length sentence to a ...

  • 模型评价指标总结

    1、分类准确度 定义:分类准确度(accuracy),指在分类模型中,模型的输出分类结果与真实结果一致的样本占总分...

  • javascript宏任务及微任务实例

    首先看一段代码,请写出输出结果: 输出结果:宏任务及微任务实例输出结果 宏任务和微任务分类: 宏任务(macrot...

  • 机器学习分类

    输出分类 按照输出结果的不同,分为PLA,multinominal 和regression。按照标记的不同,分为监...

  • MLA CH2 kNN code part

    Python实例 kNN.py: 输出结果 得出结果:“?”是Romance Movie 如何测试分类器(clas...

  • 逻辑回归

    1 、引言 逻辑回归( logistic regression ),是一种分类方法,用于二分类问题,即输出结果只有...

  • 吴恩达机器学习—反向传播算法

    代价函数 当处理二分类问题时,输出值有一个,输出结果为1或0;当输出值有多个时,输出结果为一个向量。 神经网络的损...

  • 代价函数(Cost function)

    sl,代表第l层的神经网络的单位个数。在多类分类中,输出是一个k层矩阵。 代价函数: 神经网络输出k维分类结果,所...

  • 机器学习的基本任务

    机器学习的基本任务(也就是说算法的模型的输出结果主要分为两类) 分类任务 二分类 多分类 多分类任务还包括:数字识...

  • Serving Google BERT in Productio

    本文来源:bert-as-service 博客 Serving Google BERT in Production...

网友评论

      本文标题:bert-as-service输出分类结果

      本文链接:https://www.haomeiwen.com/subject/jakyaqtx.html