我有两个关于如何使用 Transformers 的 Tensorflow 实现进行文本分类的问题。
谢谢!
我的数据中的标签是一个 (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])?
我正在尝试为句子分类任务训练模型。输入是一个句子(整数向量),输出是一个标签(0 或 1)。我在这里和那里看到了一些关于使用 Bert 和 GPT2 进行文本分类任务的文章。但是,我不确定应该从哪一个开始。您会使用 NLP 中的哪些最新模型(例如原始 Transformer 模型、Bert、GPT2、XLNet)开始?为什么?我更愿意在 Tensorflow 中实现,但我也可以灵活地使用 PyTorch。谢谢!
我有三个不同的 .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
我在 tensorflow (tf.keras.layers.Dropout) 中实现的模型上使用 dropout 层。我在训练期间设置了“training=True”,在测试时设置了“training=False”。性能很差。我也在测试期间不小心更改了“training=True”,结果变得更好了。我想知道发生了什么?为什么它会影响训练损失值?因为我不会对培训进行任何更改,并且整个测试过程都在培训之后进行。但是,在测试中改变“training=True”会影响训练过程,导致训练损失接近于零,然后测试结果会更好。任何可能的解释?
谢谢,