加载并准备新的数据集

时间:2020-08-26 16:47:38

标签: python tensorflow sentiment-analysis

我正在使用tf创建情感分析模型。因为我是机器学习的新手,所以我遵循了Tensorflow官方文档上的指南来训练和测试带有IMDB_reviews数据集的模型。效果很好,但我希望可以与另一个数据集一起训练。

因此,我下载了此数据集:“ movie_review.csv”。它包含多个列,我想访问文本和标签(标签为正值或负值,文本为评论的文本)。

我想要做的是准备将CSV作为数据集,访问文本和标签,对其进行矢量化,然后将其馈送到网络。测试和训练之间没有划分,所以我也必须划分文件。 所以,我想知道如何:

0 -访问我下载的文件,并将其转换为数据集。
1 -访问文件中的文本和标签,可能无需使用熊猫。如果推荐使用熊猫,并且有一种简单的方法来访问文件并使用TensorFlow传递到网络,我会答应的。
2 -在测试集中和训练集中拆分文件(实际上我已经找到了一个熊猫解决方案)。
3 -对我的文本和标签进行矢量化处理以填充我的网络。 如果您有完整的操作指南,那就很好,只需使用TensorFlow。

问题0至3已回答

好的,我使用发布的文件来加载数据集以训练短句子模型,但是我在训练中遇到了麻烦。 当我按照指南构建文本分类模型时,我得到了以下代码:

dataset, info = tfds.load('imdb_reviews/subwords8k', with_info=True, as_supervised=True)

train_dataset, test_dataset = dataset['train'], dataset['test']
encoder = info.features['text'].encoder

BUFFER_SIZE = 10000
BATCH_SIZE = 64

padded_shapes = ([None], ())

train_dataset = train_dataset.shuffle(BUFFER_SIZE).padded_batch(BATCH_SIZE, padded_shapes = padded_shapes)

test_dataset = test_dataset.padded_batch(BATCH_SIZE, padded_shapes = padded_shapes)

model = tf.keras.Sequential([tf.keras.layers.Embedding(encoder.vocab_size, 64),
                            tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)),
                            tf.keras.layers.Dense(64, activation='relu'),
                            tf.keras.layers.Dense(1, activation='sigmoid')])
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(1e-4),
                metrics=['accuracy'])

history = model.fit(train_dataset, epochs = 1, validation_data = test_dataset, validation_steps=30, callbacks=[cp_callback])

因此,我以这种方式训练了我的模型(有些零件丢失了,我已经包括了所有基本零件)。此后,我想用另一个数据集训练模型,感谢安德鲁,我以这种方式访问​​了我创建的数据集:

csv_dataset = tf.data.experimental.CsvDataset(filepath, default_values, header=header)

def reshape_dataset(txt, tag):
    txt = tf.reshape(txt, shape=(1,))
    tag = tf.reshape(tag, shape=(1,))
    return txt, tag

csv_dataset = csv_dataset.map(reshape_dataset)

training = csv_dataset.take(10) 
testing = csv_dataset.skip(10)

我的问题是使数据集适应我已经拥有的模型。我尝试了各种解决方案,但是形状出现错误。 有人可以这么温柔地向我解释如何做吗?显然,安德鲁已经在他的文件中发布了第3步的解决方案,但是我想将我的模型与训练中保存的权重一起使用。

1 个答案:

答案 0 :(得分:1)

这听起来像是使用Tensorflow的Dataset API的好地方。 Here's一个笔记本/教程,涵盖了如何从Tensorflow网站上进行一些基本数据输入和预处理工作!

我还制作了一个带有快速示例的笔记本,回答了您的每个实现问题。您可以找到here

相关问题