加载并准备新的数据集
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 在他的文件中发布,但我想使用我的模型和我在训练期间保存的权重。
我正在使用 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 在他的文件中发布,但我想使用我的模型和我在训练期间保存的权重。