加载并准备新的数据集

Load and prepare a new dataset

我正在使用 tf 创建情绪分析模型。由于我是机器学习的菜鸟,我按照 Tensorflow 官方文档中的指南使用 IMDB_reviews 数据集训练和测试模型。它工作得很好,但我希望我可以用另一个数据集训练它。

所以我下载了这个数据集:“movie_review.csv”。它包含各种列,我想访问文本和标签(其中标签是正值或负值,文本是评论的文本)。

我想做的是将 CSV 准备为数据集,访问文本和标签,将它们矢量化,并将它们提供给网络。测试和训练之间没有划分,所以我也必须划分文件。 所以,我想知道如何:

0- 访问我下载的文件并将其转换为数据集。
1- 访问文件中的文本和标签,可能不使用 pandas。如果 pandas 被推荐并且有一种简单的方法来访问文件并使用 TensorFlow 传递到网络我会接受答案。
2- 在测试集和训练集中拆分文件(实际上我已经找到了 pandas 解决方案)。
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 步的解决方案已经由 Andrew 在他的文件中发布,但我想使用我的模型和我在训练期间保存的权重。

这听起来是使用 Tensorflow 数据集的好地方 API。 Here's notebook/tutorial 涵盖如何进行一些基本数据输入和预处理的内容,直接来自 Tensorflow 的网站!

我还制作了一个带有快速示例的笔记本,通过实现来回答您的每个问题。你可以发现 here.