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. 国美零售引入AI图像识别技术 线下自动识别用户数据
  2. 闭包 | 浅谈JavaScript闭包问题
  3. 怎么隐藏滚动条又能滚动
  4. 提高java效率_提高Java编程效率的一个技巧
  5. Mac使用NDK编译FFmpeg4.0.2单独so库(验证可用)
  6. java中成绩转换_成绩转换
  7. Bend Labs弯曲传感器介绍
  8. C++ Debug:fatal error C1083: Cannot open include file: 'streams.h': No such file or directo 2010-7-5
  9. sprintf函数的用法linux,Linux 常用函数——sprintf函数
  10. 杂篇:随笔编程杂谈录--《隆中对》
  11. Linux下 Yum 是什么
  12. torch.autograd.grad求二阶导数
  13. 电机学他励直流发电机matlab,华南理工电机学随堂练习答案完整版
  14. LoraWan协议剖析,快速掌握协议要点
  15. 基于FPGA的LD3320语音识别模块驱动设计
  16. Ubuntu-Base 18 文件系统 在iMX8平台上的移植
  17. 互联网大咖看了都忍不住点赞的电脑配置指南【电脑小白必备】【十年私藏公开分享】
  18. UNWALLET介绍与愿景
  19. oracle矩阵转置,法线变换、逆转置、伴随转置
  20. 解决 squid The basicauthenticator helpers are crashing too rapidly, need help

热门文章

  1. Linux环境下Shell脚本基础篇-鸡兔同笼问题
  2. c# legend 显示位置_C# charting中图例(legend)的问题。
  3. 游戏运营必须知道的知识(二),入行必备!!
  4. @Transactional注解和Mybatis缓存问题(Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致)
  5. 五、空气质量分析与结果展示
  6. 汽车结构嵌件市场现状及未来发展趋势
  7. 显卡DirectX技术发展详解
  8. Liunx yun 安装 mysql5.7
  9. HAUTOJ 1262: 魔法宝石 24行代码
  10. 【贪心算法】加勒比海盗船——最优装载问题