我在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)
我想您应该基于使用SMOTE的类对句子嵌入进行过度采样。以下是最简单的方法:
1-安装库imblearn
pip install imblearn
2-您可以选择使用SMOTE过采样或ADASYN过采样
导入所需的:
from imblearn.over_sampling import SMOTE
或from 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-享受培训和测试您的网络:)
希望有帮助。你知道吗
相关问题 更多 >
编程相关推荐