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 ...
最新文章
- 国美零售引入AI图像识别技术 线下自动识别用户数据
- 闭包 | 浅谈JavaScript闭包问题
- 怎么隐藏滚动条又能滚动
- 提高java效率_提高Java编程效率的一个技巧
- Mac使用NDK编译FFmpeg4.0.2单独so库(验证可用)
- java中成绩转换_成绩转换
- Bend Labs弯曲传感器介绍
- C++ Debug:fatal error C1083: Cannot open include file: 'streams.h': No such file or directo 2010-7-5
- sprintf函数的用法linux,Linux 常用函数——sprintf函数
- 杂篇:随笔编程杂谈录--《隆中对》
- Linux下 Yum 是什么
- torch.autograd.grad求二阶导数
- 电机学他励直流发电机matlab,华南理工电机学随堂练习答案完整版
- LoraWan协议剖析,快速掌握协议要点
- 基于FPGA的LD3320语音识别模块驱动设计
- Ubuntu-Base 18 文件系统 在iMX8平台上的移植
- 互联网大咖看了都忍不住点赞的电脑配置指南【电脑小白必备】【十年私藏公开分享】
- UNWALLET介绍与愿景
- oracle矩阵转置,法线变换、逆转置、伴随转置
- 解决 squid The basicauthenticator helpers are crashing too rapidly, need help
热门文章
- Linux环境下Shell脚本基础篇-鸡兔同笼问题
- c# legend 显示位置_C# charting中图例(legend)的问题。
- 游戏运营必须知道的知识(二),入行必备!!
- @Transactional注解和Mybatis缓存问题(Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致)
- 五、空气质量分析与结果展示
- 汽车结构嵌件市场现状及未来发展趋势
- 显卡DirectX技术发展详解
- Liunx yun 安装 mysql5.7
- HAUTOJ 1262: 魔法宝石 24行代码
- 【贪心算法】加勒比海盗船——最优装载问题