小编khe*_*edi的帖子

如何使用 Transformers 进行文本分类?

我有两个关于如何使用 Transformers 的 Tensorflow 实现进行文本分类的问题。

  • 首先,似乎人们大多只使用编码器层来完成文本分类任务。然而,编码器层为每个输入词生成一个预测。根据我对transformers的理解,每次到encoder的输入都是输入句子中的一个词。然后,使用当前输入词计算注意力权重和输出。我们可以对输入句子中的所有单词重复这个过程。因此,我们最终会得到输入句子中每个单词的(注意力权重、输出)对。那是对的吗?那么你将如何使用这些对来执行文本分类?
  • 其次,基于这里的 Transformer 的 Tensorflow 实现,他们将整个输入句子嵌入到一个向量中,并将一批这些向量馈送到 Transformer。但是,根据我从The Illustrated Transformer中学到知识,我希望输入是一批单词而不是句子

谢谢!

nlp transformer-model tensorflow bert-language-model

8
推荐指数
2
解决办法
8363
查看次数

如何计算sklearn中随机森林模型的AUC?

我的数据中的标签是一个 (N x 1) 向量。负样本的标签值为 0,正样本的标签值为 1(因此,这是一个二元分类问题)。我使用.fitsklearn的功能并在我的训练集上安装了一个随机森林。为了计算测试集的 AUC,我使用metrics.roc_auc_score (test_labels, probabilities). 我正在使用 predict_proba(my_test_set)来获取概率。但是,predict_proba(my_test_set)返回一个 (N_test, 2) 矩阵。我看到很多人使用这个返回矩阵的第二列 ( predict_proba(my_test_set)[:,1]) 并将其提供给metrics.roc_auc_score来计算 AUC,但为什么是第二列?为什么不是第一列 ( predict_proba(my_test_set)[:,0])?

random-forest scikit-learn auc

7
推荐指数
1
解决办法
7891
查看次数

您将使用哪种模型(GPT2、BERT、XLNet 等)进行文本分类任务?为什么?

我正在尝试为句子分类任务训练模型。输入是一个句子(整数向量),输出是一个标签(0 或 1)。我在这里和那里看到了一些关于使用 Bert 和 GPT2 进行文本分类任务的文章。但是,我不确定应该从哪一个开始。您会使用 NLP 中的哪些最新模型(例如原始 Transformer 模型、Bert、GPT2、XLNet)开始?为什么?我更愿意在 Tensorflow 中实现,但我也可以灵活地使用 PyTorch。谢谢!

nlp language-model tensorflow bert-language-model

7
推荐指数
0
解决办法
6542
查看次数

如何在tensorflow中使用tf.data读取.csv文件?

我有三个不同的 .csv 数据集,我通常使用 pandas 读取它们并训练深度学习模型。每个数据都是一个 m 矩阵,其中 n 是样本数,m 是特征数。读取数据后,我进行一些重塑,然后使用以下方法将它们输入到我的深度学习模型中feed_dict

data1 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])
data2 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])
data3 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])

data = pd.concat([data1, data2, data2], axis=1)

# Some deep learning model that work with data
# An optimizer

with tf.compat.v1.Session() as sess:
     sess.run(init)
     sess.run(optimizer, feed_dict={SOME VARIABLE: data})  
Run Code Online (Sandbox Code Playgroud)

然而,我的数据太大,现在无法放入内存,我想知道如何使用 tf.data 来读取数据,而不是使用 pandas。抱歉,如果我提供的脚本是伪代码而不是我的实际代码。

python deep-learning tensorflow tensorflow2.0 tf.data.dataset

5
推荐指数
1
解决办法
7417
查看次数

为什么在测试模式期间在 tf.keras.layers.Dropout 中设置 training=True 会导致较低的训练损失值和较高的预测精度?

我在 tensorflow (tf.keras.layers.Dropout) 中实现的模型上使用 dropout 层。我在训练期间设置了“training=True”,在测试时设置了“training=False”。性能很差。我也在测试期间不小心更改了“training=True”,结果变得更好了。我想知道发生了什么?为什么它会影响训练损失值?因为我不会对培训进行任何更改,并且整个测试过程都在培训之后进行。但是,在测试中改变“training=True”会影响训练过程,导致训练损失接近于零,然后测试结果会更好。任何可能的解释?

谢谢,

tensorflow dropout tensorflow2.0

2
推荐指数
1
解决办法
3263
查看次数