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近乎不变问题相关推荐

  1. Caffe学习系列(19): 绘制loss和accuracy曲线

    转载自: Caffe学习系列(19): 绘制loss和accuracy曲线 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5110204.htm ...

  2. Caffe---Pycaffe 绘制loss和accuracy曲线

    Caffe---Pycaffe 绘制loss和accuracy曲线 <Caffe自带工具包---绘制loss和accuracy曲线>:可以看出使用caffe自带的工具包绘制loss曲线和a ...

  3. ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线

    在利用Caffe训练相应的网络模型后,往往需要绘制训练过程中的数据,这样可以更加直观地展示我们的实验结果,事实上,caffe自带了这样的小工具,当然你也可以自己写个代码,下面分别介绍这两种方法: (一 ...

  4. CAFFE-SSD中loss、accuracy曲线可视化(双Y轴)

    CAFFE-SSD中loss.accuracy曲线可视化(双Y轴) 1.利用输出的.log文件(应该在caffe/jobs/VGGNet/VOC0712/SSD_300x300目录下)生成.test ...

  5. 【caffe】可视化网络的训练过程的loss和accuracy

    转载自https://blog.csdn.net/chen1234520nnn/article/details/102780652 前言:我们在训练网络的时候,网络训练完毕后,需要可视化训练过程中lo ...

  6. 神经网络训练不稳定问题(loss和accuracy波动大)的一种原因及解决方案

    用LSTM做时间序列预测时发现训练刚开始时loss(MSE)下降很快,accuracy(调整R方)上升也很快,但到后面loss总体上下降变慢,并且时有波动,accuracy甚至会经常出现负值,然后又回 ...

  7. 【Caffe】利用log文件绘制loss和accuracy(转载)

    (原文地址:http://blog.csdn.net/liuweizj12/article/details/64920428) 在训练过程中画出accuracy 和loss曲线能够更直观的观察网络训练 ...

  8. python画loss或者accuracy曲线图

    最近总会有人提出画图的需求,然后自己又得从网上找matplotlib画图的代码,又重新写一遍,索性自己写一个博客,自己找自己写过的资料,以后留着自己用哈哈,我的代码如下: import numpy a ...

  9. Python绘制训练过程的loss和accuracy曲线

    一:在训练好的模型下面加入绘图代码. model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy ...

最新文章

  1. linux安装vsftpt服务,centos安装vsftp服务.md
  2. 小功能 获取一段汉字的拼音首字母
  3. mysql running_mysql常用命令
  4. 如何在Visual Studio 2017中使用C# 7+语法
  5. 计算机基础及应用笔试,计算机基础及应用测试笔试题
  6. python统计字符在文件中出现的次数_一文搞定统计字符串中某字符出现的频次
  7. Codeforces Round #256 (Div. 2)
  8. 2020胡润慈善榜揭晓:许家印以28亿元捐赠额成为中国首善
  9. 计算机d盘不显示容量,电脑D盘可用空间小,可是看不到文件
  10. JAVA File转Byte[]
  11. 全球最大的第一视角视频数据集开源,取自真实生活,还能提升厨艺
  12. rails 3环境搭建
  13. 在电脑上安装Intel HAXM(硬件加速执行管理器)
  14. rostcm6情感分析案例分析_微博分析-内容分析系统 ROST CM 6 使用手记
  15. Python数据分析与应用(一)
  16. ubuntu下怎样安装星际译王stardict和下载本地词典
  17. 联想Lenovo拯救者 Legion R9000P 2021H 触控板失灵
  18. c语言加减乘除怎么随机输入,注会机考加减乘除如何输入,注会机考加减乘除如何输入...
  19. 当前话题管理故事:厨师绑湖蟹 (转载)
  20. System.setOut(ps)重定义了输出流后,如何重定向控制台输出

热门文章

  1. 1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?具体该如何实现方法讲解
  2. 洛谷:P2832 行路难(堆优化Dijkstra(错解)bfs(正解) + 记录路径)
  3. 服务器上的压缩文件怎么解压,什么是压缩文件,如何解压?
  4. c++ 巧妙利用二进制,猜出你的生日 猜生日游戏
  5. 选项卡怎么实现切换效果
  6. Selenium学习_常用场景代码示例
  7. 汶川大地震的捐款风波
  8. APP使用monkey进行稳定性测试过程
  9. php图床_PHP EasyImage 简单图床源码
  10. C++ Primer Plus(嵌入式公开课)---第5,6章 循环和关系表达式 分支语句和逻辑运算符