当前位置:首页 » 《随便一记》 » 正文

智能车AI电磁部署学习 (二)_想实现显示器自由

25 人参与  2021年03月09日 07:43  分类 : 《随便一记》  评论

点击全文阅读


文章目录

  • 思考
  • 优化
    • 转存信息
    • 数据转换
  • LSTM

智能车AI电磁部署学习 (一)

思考

AI组本意是通过短前瞻短数据集去长前瞻的打脚值,来使得智能车通过短前瞻获得与长前瞻一致的速度。
相对于短前瞻,长前瞻的信息相对更加丰富、准确,短前瞻甚至会丧失一部分关键信息。经过了解、学习LSTM后,并与队友讨论,认为输入不仅要只有电感值,可以尝试输入一些前次或前前次的舵机打脚值与某些主要电感数值,来使得系统更加稳定,且与时间有关,前后联系更加紧密。因为电磁变化是个连续过程,相邻两次的数值是有关联的,而此关联与转角值恰好是有某种非线性函数关系。

优化

数据都是单片机采集存储的,需要把数据整理、发送到PC端并转换成一个训练集、测试集。这里假定智能车采用无线透传串口模块或是SD卡FatFS文件系统存储采集数据。
本着在家要摸鱼的原则,优化了这一流程,更加方便实现训练流程,减少时间开销,编写了一个txt转py数组,且随机打乱自动分配训练、测试集的脚本。
可以读取相应格式的txt文本,转换成对应X Y矩阵,自定义设置训练集比例,可直接传入神经网络。

转存信息

首先规定通信格式。
在检测到begin关键字后开始进行数据转换,一行数据的前N-1项是神经网络的输入,最后的一个参数为训练的结果值,例如100,100,0,其中100 1002输入神经网络X值,0Y值(这里我用的是Softmax分类,通过数字转换成独热码,真正的多输出还需改写脚本,舵机打脚值一个数据位即可)。
串口转存txt图片

数据转换

通过读取txt内的数据并将其转换为train_xtrain_ytest_xtest_y,四个矩阵。

train_x_org, train_y_org = readtxt_make_arr("usart.txt", "begin")
train_x_y_org = np.c_[train_x_org, train_y_org] # 合并矩阵 为了保证打乱顺序后其x y值仍然相互对应
train_x_y, test_x_y = split_train(train_x_y_org, 0.2)
train_x, train_y = np.split(train_x_y, [-1], axis=1)    # 分割数组最后一列做为y
test_x, test_y = np.split(test_x_y, [-1], axis=1)

np.split(train_x_y, [-1], axis=1) # axis = 1对列操作

读取后,可以看到x_orgy_org的大小与输入一致。
读取后x源矩阵与y源矩阵
打乱并且分割后,训练集与测试集数量相加与源矩阵维度相同,分割比例为0.2,数量正确。
分割后

LSTM

LSTM是长短期记忆(Long short-term memory, LSTM),作为一种特殊的RNN相比普通的RNN,LSTM能够在更长的序列中有更好的表现。而电磁数据恰好是一个较长的连续序列。
LSTM前向传播图
相对于普通的ANN网络,RNN中的LSTM的前向传播看起来还是略显复杂。
LSTM中遗忘门与更新门是保存记忆与更新记忆的关键,当神经网络可以判断出智能车处于转弯处或是长直道且保存记忆,并在离开元素后更新记忆,效果应该是较为理想的。
但良好的记忆能力使得其非常擅长于长时间记忆某个值,对于存在记忆细胞中的某个值,即使经过很长很长的时间步——吴恩达
在所剩无几的假期中我并没有打算着手去实现LSTM流程,但其思想可少许借鉴于现有ANN网络的改进,也就是文章开头所说的思考。即使用前次电感值、新电感值、上次打脚值作为神经网络输入,计算出新打脚值。
当回校后若普通ANN效果不尽人意,再考虑是否尝试LSTM的实现。
我认为LSTM可能是电磁传感器控制一种较为合理的方案,智能车AI电磁部署学习 (一)开头的知乎链接中的前辈也提到LSTM(若日后摄像头也可以跑神经网络,那可能一定是采用CNN,或者CNN+RNN的方案) 。
欢迎读者评论、留言、私信共同探讨。


点击全文阅读


本文链接:http://zhangshiyu.com/post/16250.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1