![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tensorflow
Tensorflow API,案例
BruceJust
这个作者很懒,什么都没留下…
展开
-
怎么拿到BERT任意层的embedding结果
本方法基于hugginface的transformers项目改造过程其实很简单,基于TFBertMainLayer下的call函数做了改造,如果直接用self.bert的输出其实就是CLS token 的结果。使用时同样可以使用from_pretrained来加载下载好的BERT模型参数,然后把输入的数据整理为input_ids, attention_mask,token_type_ids格式即可。使用tf.datasets也可。from transformers.modeling_t原创 2021-02-15 22:53:04 · 3276 阅读 · 1 评论 -
标签平滑 Label smoothing / Temperature Softmax
标签平滑 Label smoothing逻辑为什么有效近期在查看一些训练技巧,无意中发现了标签平滑 Label smoothing,非常简单却有效的一个技巧,记录一下。逻辑思路很简单,如名,使标签更平滑。假设三分类标签 [1, 0, 0]从正确类的1中拿出一点点分给其他类,比如拿出0.1平分。变成 [0.933, 0.033, 0.033]代码如下:def label_smoothing(inputs, epsilon=0.1): K = inputs.get_shape().as_lis原创 2020-09-20 22:44:47 · 1639 阅读 · 0 评论 -
Pycharm中使用keras在一行打印进度条
关于在 PyCharm 中 Keras 进度条打印新行而不是更新栏搜索到如下文件打开: Lib\site-packages\keras\utils\generic_utils.py 。导入包: import os找到下面这行: if self._dynamic_display:然后修改为:if self._dynamic_display or "PYCHARM_HOS...原创 2020-04-25 22:16:37 · 1039 阅读 · 2 评论 -
基于BERT fine-tuning的情感分类
近期在自己的数据集上尝试了BERT 的fine-tuning,效果不错,现在把自己的操作过程分享给大家。由于自己的数据不方便分享,我替换成了一份外卖情感分析,供大家使用。数据及完整代码:https://github.com/BruceJust/Sentiment-classification-by-BERT首先下载huggingface出品的transformers包,这...原创 2020-04-12 21:36:03 · 1436 阅读 · 2 评论 -
tensorflow 2.0 自定义训练
常常会遇到自定义网络结构的情况,自定结构后往往会有多个输入,或者还需要自定义loss或者accuracy函数,那么keras的fit就无法使用了,因此需要自定义训练步骤下面则自定义一次batch的训练步骤,包含了计算loss,accuracy和梯度下降。tensorflow2.0 主推eager模式,那么tf.GradientTape则是eager模式下的利器,自动计算梯度并传递最...原创 2020-03-19 22:10:28 · 1772 阅读 · 8 评论 -
tf.random.fixed_unigram_candidate_sampler进行负例采样
在不少任务中需要进行负例采样来降低训练难度,加速训练下面讲一下tensorflow中的负例采样函数sampled_ids, true_expected_count, sampled_expected_count = tf.random.fixed_unigram_candidate_sampler( true_classes = V, # 待采样真实数据,...原创 2020-03-17 22:50:22 · 992 阅读 · 1 评论 -
NLP 中消除padding对计算影响的技巧 mask
NLP的任务处理中,处理的通常是一句句话,每一句话的长度是不同的,这给训练带来了麻烦。特别是为了高效的GPU并行运算,数据大小的一致性就很重要了,除非batch_size设置为1。增加padding因此我们就需要把一堆句子的长度统一,通常是用最长的句子的长度为标准(也可以自定义),对短于这个长度的句子进行padding,长于的就截掉。keras中可以用proprecessing来出来d...原创 2020-03-14 18:33:31 · 5300 阅读 · 2 评论 -
Tensorflow 2.0 自定义带mask的loss function
在做序列预测时,常常由于输入的(文本)序列长度不同,而需要padding到固定长度,于是就带来了大量的0,在计算loss的时候其实这些0的位置是多余,它们参与的loss计算是不准确的,于是就需要创建一个带mask的loss function来剔除掉这些0对loss计算的营销。loss_object = keras.losses.SparseCategoricalCrossentropy( ...原创 2020-03-10 23:03:46 · 3131 阅读 · 0 评论 -
Tensorflow GPU 内存自增长,随时观察GPU内存真实占用
设置GPU内存为自增长,避免直接全部占用GPU,还可以随时观察到当前任务实际GPU占用,对调整训练策略有帮助,比如维度大小,batch_size大小等# 获取所有可用GPUgpus = tf.config.experimental.list_physical_devices('GPU')# 将对应GPU设置为内存自增长tf.config.experimental.set_memory_...原创 2020-03-08 22:16:24 · 751 阅读 · 0 评论