在我提出我的问题之前,请注意我是一个深入学习的新手,我是第一次尝试一些事情。我的大部分代码/逻辑都是从互联网上的各种引用中获得的。
目标:建立一个LSTM/CNN模型,对tensorflow数据集中可用的IMDB评论进行分类
方法1: 1)基于LSTM的训练数据- 45000 (10%验证分离),测试数据- 5000,精度> 95%,validation_accuracy > 85%,使用尺寸为100的手套嵌入方式2: 1) CNN模型- a)列车数据- 45000,test_data - 5000 b)列车数据- 50%,test_data - 50%精度> 95%,validation_accuracy > 85%。
代码:https://github.com/shankartmv/Deep-Learning-Work/blob/main/IMDB_情操_评论_使用_tensorflow_dataset.ipynb
问题: Test_data的准确性不会超过52%,因为在培训期间,可用的代码/引用的approaches.Most都使用test_data。test_data不是我训练的一部分。
试图提高测试准确性的方法:
我猜没有足够的训练数据。我需要帮助如何提高测试数据的准确性。
发布于 2021-01-23 11:57:25
在培训期间,大多数可用的代码/引用都使用test_data。test_data不是我训练的一部分。
虽然这是我们应该做的方式,但是像编码这样的事情必须整体地完成。
在您的例子中,您已经分别调用了用于测试和培训的pre_process。
因此,单词是独立转换成数字的。这种情况不应该发生。
tokenizer.texts_to_sequences(test)
以上托卡器应该是一个适合列车数据。
如果我在火车上随机打印101键的记号,测试一下。这就是结果
print(train_tokn.index_word[101])
print(test_tokn.index_word[101])想想字符
我认为您应该使用train_tokn作为测试数据,并且它应该得到改进。我相信一个非常简单的LSTM在这个数据集上可以达到85%。
或者,手动嵌入两个列车,测试使用GloVe嵌入。
这个问题的一个简单例子
from keras.preprocessing.text import Tokenizer
train = ['I am sorry']
test = ['I am very sorry']
max_words = 10
# Train
tokenizer = Tokenizer(num_words=max_words)
tokenizer.fit_on_texts(train)
tokenizer.index_word # {1: 'i', 2: 'am', 3: 'sorry'}
# Test
tokenizer = Tokenizer(num_words=max_words)
tokenizer.fit_on_texts(test)
tokenizer.index_word # {1: 'i', 2: 'am', 3: 'very', 4: 'sorry'}https://datascience.stackexchange.com/questions/88287
复制相似问题