LSTM的loss和accuracy近乎不变问题
LSTM的loss和accuracy近乎不变问题
原因(如果我的理解不对请纠正,万分感谢)
lstm不是线性准确度,这点与cnn不同,之前做cnn认为输出都是显性的,而lstm需要不定的多次迭代才会开始提高准确度
解决方法
更换模型结构,损失函数,标签样式,迭代次数,或者重新生成数据集,重新进行训练等
参考代码
train.py
import h5py
import numpy as np
from tensorflow.keras import layers, modelsf1 = h5py.File('train_lstm.h5', 'r')
train_x = np.array(f1['train_content']) # 训练集数据 将数据转化为np.array
train_y = np.array(f1['train_label']) # 训练集标签f2 = h5py.File('test_lstm.h5', 'r')
test_x = np.array(f2['test_content']) # 测试集数据 将数据转化为np.array
test_y = np.array(f2['test_label']) # 测试集标签# train_x = train_x[:100]
# train_y = train_y[:100]
print(train_x)
print(train_y)
print(train_x.shape)
print(train_y.shape)
# train_x = np.array([[[0.1]], [[0.2]], [[0.3]], [[0.4]]])
# train_y = np.array([0.2, 0.3, 0.4, 0.5])
# LSTM
model = models.Sequential()
model.add(layers.LSTM(50, input_shape=(200, 100)))
model.add(layers.Dense(2, activation='softmax'))
# compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(train_x, train_y, epochs=10, batch_size=1, verbose=2)
# 保存模型p
model.save('model_lstm1.h5')
# 测试
result = model.evaluate(test_x, test_y)
print('测试结果:', result)
test.py
import random
import tensorflow as tf
import numpy as np
import re
import jieba
from gensim.models import word2veclabel_list = ['虚假评论', '真实评论']
model = tf.keras.models.load_model(r'model_lstm1.h5')
contents = ['好吃,非常不错,口感挺软的,不会觉得噎,不会干是属于比较新鲜的口感。', '口味不错,热量也不高。吃着非常好,非常愉快的一次购物体验。', '做工蛮精细的,木材表面磨得很平滑。']
# random.shuffle(contents)
# 预处理
word = word2vec.Word2Vec.load('word2vec.model')
r = r"[a-zA-Z0-9\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、:;;《》“”~@#¥%……&*()]+"
l = []
for content in contents:data = re.sub(r, '', content)fc = list(jieba.cut(data))print(fc)data_list = np.zeros((200, 100))num = 0for j in fc:if j in word.wv:data_list[num] = list(word.wv[j])else:data_list[num] = [0]num += 1print(data_list)l.append(data_list)# 和数据集训练方式一样,是数据列表,且需要np.array(l)转格式,不然会报错
content = np.array(l)
# 检查其架构
model.summary()
# print(l)predictions = model.predict(content, verbose=0)
print(predictions)
# for i, j in enumerate(predictions):
# print(contents[i])
# if j > 0.5:
# print('真实评论')
# else:
# print('虚假评论')
# print()
现在又不行了,哎,LSTM这玩意是真的玄学
部分成功样例
双输出二分类损失函数
model = models.Sequential()
model.add(layers.LSTM(50, input_shape=(200, 100)))
model.add(layers.Dense(2, activation='softmax'))
# compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(train_x, train_y, epochs=50, batch_size=1, verbose=2)
单输出(不符合二分类标准)
model = models.Sequential()
model.add(layers.LSTM(50, input_shape=(200, 100)))
model.add(layers.Dense(1))
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
x_train, y_train = get_train()
x_test, y_test = get_test()
model.fit(x_train, y_train, epochs=50, batch_size=1, verbose=2)
纪念下卡了我两天的破LSTM模型,555~
LSTM的loss和accuracy近乎不变问题相关推荐
- Caffe学习系列(19): 绘制loss和accuracy曲线
转载自: Caffe学习系列(19): 绘制loss和accuracy曲线 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5110204.htm ...
- Caffe---Pycaffe 绘制loss和accuracy曲线
Caffe---Pycaffe 绘制loss和accuracy曲线 <Caffe自带工具包---绘制loss和accuracy曲线>:可以看出使用caffe自带的工具包绘制loss曲线和a ...
- ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线
在利用Caffe训练相应的网络模型后,往往需要绘制训练过程中的数据,这样可以更加直观地展示我们的实验结果,事实上,caffe自带了这样的小工具,当然你也可以自己写个代码,下面分别介绍这两种方法: (一 ...
- CAFFE-SSD中loss、accuracy曲线可视化(双Y轴)
CAFFE-SSD中loss.accuracy曲线可视化(双Y轴) 1.利用输出的.log文件(应该在caffe/jobs/VGGNet/VOC0712/SSD_300x300目录下)生成.test ...
- 【caffe】可视化网络的训练过程的loss和accuracy
转载自https://blog.csdn.net/chen1234520nnn/article/details/102780652 前言:我们在训练网络的时候,网络训练完毕后,需要可视化训练过程中lo ...
- 神经网络训练不稳定问题(loss和accuracy波动大)的一种原因及解决方案
用LSTM做时间序列预测时发现训练刚开始时loss(MSE)下降很快,accuracy(调整R方)上升也很快,但到后面loss总体上下降变慢,并且时有波动,accuracy甚至会经常出现负值,然后又回 ...
- 【Caffe】利用log文件绘制loss和accuracy(转载)
(原文地址:http://blog.csdn.net/liuweizj12/article/details/64920428) 在训练过程中画出accuracy 和loss曲线能够更直观的观察网络训练 ...
- python画loss或者accuracy曲线图
最近总会有人提出画图的需求,然后自己又得从网上找matplotlib画图的代码,又重新写一遍,索性自己写一个博客,自己找自己写过的资料,以后留着自己用哈哈,我的代码如下: import numpy a ...
- Python绘制训练过程的loss和accuracy曲线
一:在训练好的模型下面加入绘图代码. model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy ...
最新文章
- linux安装vsftpt服务,centos安装vsftp服务.md
- 小功能 获取一段汉字的拼音首字母
- mysql running_mysql常用命令
- 如何在Visual Studio 2017中使用C# 7+语法
- 计算机基础及应用笔试,计算机基础及应用测试笔试题
- python统计字符在文件中出现的次数_一文搞定统计字符串中某字符出现的频次
- Codeforces Round #256 (Div. 2)
- 2020胡润慈善榜揭晓:许家印以28亿元捐赠额成为中国首善
- 计算机d盘不显示容量,电脑D盘可用空间小,可是看不到文件
- JAVA File转Byte[]
- 全球最大的第一视角视频数据集开源,取自真实生活,还能提升厨艺
- rails 3环境搭建
- 在电脑上安装Intel HAXM(硬件加速执行管理器)
- rostcm6情感分析案例分析_微博分析-内容分析系统 ROST CM 6 使用手记
- Python数据分析与应用(一)
- ubuntu下怎样安装星际译王stardict和下载本地词典
- 联想Lenovo拯救者 Legion R9000P 2021H 触控板失灵
- c语言加减乘除怎么随机输入,注会机考加减乘除如何输入,注会机考加减乘除如何输入...
- 当前话题管理故事:厨师绑湖蟹 (转载)
- System.setOut(ps)重定义了输出流后,如何重定向控制台输出
热门文章
- 1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?具体该如何实现方法讲解
- 洛谷:P2832 行路难(堆优化Dijkstra(错解)bfs(正解) + 记录路径)
- 服务器上的压缩文件怎么解压,什么是压缩文件,如何解压?
- c++ 巧妙利用二进制,猜出你的生日 猜生日游戏
- 选项卡怎么实现切换效果
- Selenium学习_常用场景代码示例
- 汶川大地震的捐款风波
- APP使用monkey进行稳定性测试过程
- php图床_PHP EasyImage 简单图床源码
- C++ Primer Plus(嵌入式公开课)---第5,6章 循环和关系表达式 分支语句和逻辑运算符