如何在嵌入之前或之后进行过采样?

2024-04-28 13:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在yoon kim的工作(用于句子分类的卷积神经网络)的tensorflow link中遇到了Denny Britz实现,我想对每个句子的嵌入向量执行SMOT(过采样),不确定如何得到这些嵌入,或者是否可以在嵌入之前进行过采样,这是丹尼的嵌入部分:

    with tf.device('/cpu:0'), tf.name_scope("embedding"):
        self.W = tf.Variable(
            tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),
            name="W",trainable=True)
        self.embedded_chars = tf.nn.embedding_lookup(self.W, self.input_x)
        self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)

Tags: nameselfsizetftensorflowlink分类神经网络
1条回答
网友
1楼 · 发布于 2024-04-28 13:30:11

我想您应该基于使用SMOTE的类对句子嵌入进行过度采样。以下是最简单的方法:

1-安装库imblearnpip install imblearn

2-您可以选择使用SMOTE过采样或ADASYN过采样

导入所需的:

from imblearn.over_sampling import SMOTEfrom imblearn.over_sampling import ADASYN

3-创建实例并选择首选参数(取决于您的问题):

sm = SMOTE(random_state=12, ratio=1.0)

4-提供您的嵌入列表及其适当的标签列表,您将得到过度采样的结果: oversampled_embeddings,oversamples_labeles= sm.fit_sample(embeding_list,labels_list)

5-享受培训和测试您的网络:)

希望有帮助。你知道吗

相关问题 更多 >