当前位置:网站首页>【过一下15】学习 lstm的一周
【过一下15】学习 lstm的一周
2022-08-05 05:12:00 【墨苏玩电脑】
gogogogo
新的任务已经出现【呼吸状态状态预测】,现在要落地这个项目。kaggle上面已经有对应的试题了
开了会议,老师阐述了需求。然后学姐也把当前的代码和数据都托付给我。
2022年7月25日
24号晚接到任务
25晨开会
开始接触pytorch的自定义模型
顺便看了一下 LSTM的概念
https://mofanpy.com/tutorials/machine-learning/torch/RNN-classification/
https://mp.weixin.qq.com/s/jPwKDeEhHGjFEij6LN_xyg
2022年7月26日
第二天 改老师给的代码,让我把原始数据输入进去,我那时候还搞不灵清LSTM的输入数据是什么格式的。
看了一下
https://blog.csdn.net/weixin_45032780/article/details/105727711
https://blog.csdn.net/qq_40728805/article/details/103959254
什么batchsize seq_length…
这个时候还认为输入的数据应该是 以流速的连续数据新建出来的时序数据
25个时间点直接送到模型里面去
20000*25数据太大了
只得去colab用GPU跑,然后,CPU和GPU冲突又会报错,加了好多cuda和to_device才行,可是GPU利用率还是一点点,寻思着 要么就是没用torch的dataloader传入数据,一个一个地传(那torch训练智能一批一批训练呀),就是慢。要么就是能用GPU的地方太少了。
2022年7月27日
第三天 去好好看了下数据
还比着这之前 数据结构化比赛的那个流程,查看了一下数据。
发现数据是真的不均衡,人平稳呼吸状态的数据巨多,(20000+),呼吸转换点则少的可怜(126)
模型一个劲输出 平稳呼吸类型0,准确率也会很高。
就想着处理这些数据,当然还结合之前看的博客,LSTM训练次序。先处理数据,生成训练的时序数据,再分训练集测试集是一种方法。或者先分训练机测试集,再生成时序序列。
0 0 0… 0 0 0 0 1 0 0 0 -1 0 …000…0 0 1 0 0 0 0
要用滑动窗口去滑着生成,窗口有1,则那个时序序列标记为1.最后生成的序列 0还是很多
我想着就用numpy数组来处理吧
然后就是开始学numpy的array,pandas的dataframe,两个绕来绕去 iloc切片 索引 yeyyyy
哦哦哦,对了,这里说一下,老师说要用用特征,所以就将那些滑动窗口内的max,min,mean,max-min作为四个特征,然后输入进去。 这个时候其实已经变得不像是传统的时序序列预测了,因为数据的输入已经变成了四个特征(可能时序上也有一些联系吧
可是这不符合我对LSTM的理解,于是查了一些
关于实战的
https://blog.csdn.net/qq_43219379/article/details/123244830
https://blog.csdn.net/yangwohenmai1/article/details/84791715
https://blog.csdn.net/Cyril_KI/article/details/122569775
关于数据输入的
https://www.zhihu.com/question/429976362
https://www.cnblogs.com/USTC-ZCC/p/11171209.html
调参说明(我去,这篇,之前都忽视了)
https://blog.csdn.net/audio_algorithm/article/details/89915816
2022年7月28日
老师让我把原来的类别转成独热编码,我需要改相应的结构,就是把LSTM底下那层的linear输出为3.然后我就看这个预测结果怎么都是负值,这肯定不对呀,网上说要用softmax。结合独热编码,搜到了,需要在训练那里的loss方法改一下,结果改成了log_softmax. 因为看那篇博客,独热编码对应的就是这个写法,如果要用crossEntropy则要求输入的是类别的预测值,而不是独热编码。
(当然最后的“预测值”还是负值,这里也不算是预测值了,应该叫做输出)softmax 取个对数log,那肯定会有负数的情况。
另外一个事情,27号处理切片问题(是为了解决样本不均衡的问题),最后还是切不出来,去问了学长,学长说了个 index
df.index 标号
- isin 在里面的
- 之外的
绝了这三个一拼,什么都有了
就是先生成序列,然后取80%的平稳状况0的标签数据,然后df.iloc[~df.isin(80%的平稳状态)],这就可以只留下20%的0数据和 -1 1 的状态数据(当然从最后来看,还是不均衡)
然后有了这个技能之后,我就可以画出来老师想要的图片了,把那些预测错误的序列给输出出来,但是之前不是说了,数据的输入已经变成了四个序列
(这时候傻了,总想着通过没有打乱顺序的标签的index去找到原来的,因为上面学长说的那个index可算是让我打开了新世界的大门了,脑子满是index)
其实可以再生成序列的时候,顺手新建个list保存一下切片的数据,然后再根据 argmax(预测值)和真实标签不同与否来筛选list,然后plot.show()
可是当时上头了,或者神志不清了,就把最开始的序列,和预测值,真实值 三个拼在一起了,还是用上面的isin 然后找到相应的坐标,然后再去往后切片(想到余成鑫走一下新建序列那一步了)
通过 negative true ,positive true,negative false,positive false分了六类。 0 -1 1
2022年7月29日
跟老师说了预测值是负值(那时候我还没意识到 我用的是logsoftmax,自己也觉得预测值是负的不对)后来知道是对的,而且logsoftmax还要快一些
老师说,你把最后一层改成softmax(自己写一个softmax自定义类)
然后我就去查了,首先 softmax基础就是linear,网上的案例实现一个简单的softmax都是 nn.linear
类型这样https://blog.csdn.net/cumina/article/details/119175423
https://zhuanlan.zhihu.com/p/475103044
https://blog.csdn.net/echo_gou/article/details/119277499
然后我找到了源码,nn.softmax就没有掉了,我真是服了(谁知道版本哪次迭代掉了。
然后疯狂的看softmax crossentropy的差别,因为我看也只能在train那里的loss去修改了。看了看我才明白log_softmax等等。(说什么NLL+softmax==Entropy)然后我突然意识到这个我在之前的博客里面鲁老师好像讲过,KL散度,Duang~~~~我裂开了
还看了一下pickle,onnx导出,netro 模型可视化
2022年7月30日
跟老师说了,然后有点摆烂的意味,最后用了老师没修改独热编码的代码,导了一下模型。
和之前原来负责该项目的学姐交流了一下,得到“训练数据很重要”的观点。
2022年7月31日
复盘一下
可以复现的项目(可以积累项目经验的)
找到了一些 复现项目的
https://blog.csdn.net/mind_programmonkey/category_9270595.html
https://www.zhihu.com/people/liu-song-99/posts
边栏推荐
猜你喜欢
Flutter learning 5-integration-packaging-publish
Application status of digital twin technology in power system
The difference between span tag and p
for..in和for..of的区别
A blog clears the Redis technology stack
Flutter learning 2-dart learning
[cesium] element highlighting
Error creating bean with name ‘configDataContextRefresher‘ defined in class path resource
Flex layout frog game clearance strategy
Homework 8.4 Interprocess Communication Pipes and Signals
随机推荐
服务器磁盘阵列
MySQL基础(一)---基础认知及操作
server disk array
分布式和集群
mysql数据库表什么字段类型的存储长度最大?
u-boot中的u-boot,dm-pre-reloc
LAB 信号量实现细节
2022 Hangzhou Electric Multi-School 1st Session 01
RL reinforcement learning summary (1)
How can Flutter parent and child components receive click events
upload上传图片到腾讯云,如何上传图片
RL强化学习总结(一)
Redis哨兵模式配置文件详解
jvm three heap and stack
uboot enable debug printing information
【学习笔记之菜Dog学C】动态内存管理之经典笔试题
1068 Find More Coins
After controlling the export file in MySQL, it becomes \N. Is there any solution?
University Physics---Particle Kinematics
淘宝账号如何快速提升到更高等级