首页 > 其他分享 >神经网络入门之一 搭建网络结构与数据采集

神经网络入门之一 搭建网络结构与数据采集

时间:2024-12-11 15:43:17浏览次数:14  
标签:入门 数据 样本 采集 神经网络 网络结构 data array out

此篇文章在2022年11月30日被记录
转移这篇文章时,突然想到了为了采集样本在公司楼下跑步了20分钟

入门神经网络一

样本采集

在本科的时候对神经网络颇有兴趣,感觉很神秘,特别是当时的yolov5目标检测算法,让我感觉特别震撼,计算机在图像识别上已经超过了人眼。但是这么长时间以来一直停留在跑demo的阶段,没有静下心来学习,为此我计划搭建一个属于自己的神经网络作为入门标志,这是第一章,主要讲了说明采集样本的过程。

  • 建立一个怎样的网络

我计划建立的网络结构,输入参数为陀螺仪三轴传感器的数据,输出内容为可能进行的姿态:休息、走路、跑步。虽然直接判断陀螺仪的传感器数据就能得到结果,但是我还是希望建立这样一个网络结构,因为在时间成本与经济成本上花费较小。

  • 输入数据的结构

输入数据是一段时间内的传感器数据,我的计划是间隔一段时间采集三轴加速度传感器数据,每个样本包括50个三轴数据,因此,输入数据为3X50的矩形。

  • 怎样采集样本

我手头有esp32开发板,板载一颗mpu6050陀螺仪,并且可以连接电池,我计划用它来采集样本,单个样本数据包括x、y、z轴的加速度传感器数据,我想将数据保存在内部flash中,这样不用携带额外的存储设备。假设一帧样本为3X50的数据,我计划每种姿态采集300帧,一个姿态就是300X3X50的数据,因为加速度计的原始数据太低,我在采集时将其扩大1000倍运算。编程使用板载的两个按键分别作为采集信息和打印信息按钮。esp32正常复位后,按键一表示采集按钮,按下后系统开始采集,将数据保存在内部flash中,一个姿态的数据采集完成后,再次按下按键可以采集下一个姿态,如此循环采集三种姿态的数据,将其保存在内部flash中,分别命名为running.txt,walking.txt,resting.txt,再按下按键二,分别将样本数据打印到串口助手,使用“e”作为间隔符号.代码位于tools/arduino_getSample/GetAllData

  • 整理样本

将串口助手打印出来的样本复制粘贴到txt中,分别重新命名放在sample文件夹下,这样的数据用程序读取起来太费劲,因此我专门写了一个脚本将txt中的样本数据储存为np文件,示例如下,当然我也会全部开源在github,这个工具位于tools文件夹下。分别转换三个txt文件,生成三个npy文件,这样我们在往后训练时读取数据会很方便。

import numpy as np

number_of_sample = 50

data_array = []

# 创建一个全为零的三维数组,其中二维部分大小为(3,number_of_sample)
data_array_out = np.empty(shape=[0, 3, number_of_sample])

data_array_out = data_array_out.astype(int)  # 强制转换为int

file = open('../sample/run.txt')  # 打开样本文件,其中e为分隔符

val_list = file.readlines()  # 读取所有行

for line in val_list:  # 遍历所有行
    line = line.strip('\n')  # 清除所有的\n
    if line == 'e':  # 发现分隔符时append数组
        print("分隔符")
        data_array_np = np.array(data_array).T  # 转置
        data_array_out = np.append(
            data_array_out, [data_array_np], axis=0)  # 将二维数组append到三位数组中
        data_array = []  # 数组清空
    else:
        num_int = list(map(int, line.split(' ')))  # 使用空格切片
        data_array.append(num_int)  # append到数组中
print(data_array_out)
print(data_array_out.shape)
np.save("../sample/run.npy", data_array_out)  # 保存数组

  • 已知存在缺陷

  1. 样本均由我一人采集,不具有普遍性,可能其他人直接使用我的网络数据效果很差
  2. 样本太少数量太少,可能会导致训练结果较差

标签:入门,数据,样本,采集,神经网络,网络结构,data,array,out
From: https://www.cnblogs.com/shumei52/p/18599773

相关文章

  • 发明图神经网络模块的人真是个天才!
    今天给大家推荐一个涨点发顶会的好方向:图神经网络(GNN)。这俩热点的结合可以轻松实现“1+1>2”的效果。图神经网络(GraphNeuralNetwork,简称GNN)是一种基于图结构的深度学习模型,专门用于处理图数据。它通过在图中的节点和边上制定一定的策略,将图结构数据转化为规范而标准的表示,......
  • 网络安全行业的那些岗位(非常详细),零基础入门到精通,看这一篇就够了
    前言在网络安全行业工作需要持续不断地学习和知识更新,一方面是由于安全理论和技术不断迭代更新,另一方面也是因为行业竞争日趋激烈,对人员素质提出来更高的要求。很多人提到网络安全职业脑海浮现就是黑客,渗透测试这些词语,渗透服务工程师确实是网络安全行业重要的岗位,但网络安......
  • 【护网】面试及经验分享(非常详细),零基础入门到精通,看这一篇就够了
    前言关于“护网”面试及经验介绍,以下是一些关键点和建议,希望能帮助你更好地准备和理解护网面试的过程:面试流程(1)投递简历-丙方公司hr先筛选一下简历,交给技术负责人面试一下,推荐给乙方(360,奇安信,安恒,绿盟等安全厂商)(2)乙方hr筛选一下简历,乙方安全厂商安排技术笔试和......
  • 循环神经网络(RNN)原理及实现
    一、引言在深度学习领域,循环神经网络(RecurrentNeuralNetwork,RNN)是一类具有独特结构和强大功能的神经网络模型。与传统的前馈神经网络不同,RNN能够处理序列数据,如时间序列数据、文本数据等,这使得它在自然语言处理、语音识别、时间序列预测等众多领域都取得了广泛的应用和显著......
  • Go指针进阶:从入门到被虐,90%开发者都踩过这些坑
    Go指针进阶:从入门到被虐,90%开发者都踩过这些坑!原创 瀛洲在线编程之道 黑客编程之道  2024年11月17日21:10 吉林 听全文黑客编程之道分享黑客编程技术,Go、Python、Rust、Java等编程技术166篇原创内容公众号指针是Go语言中最强大但也最容易出错的特......
  • VSCode开发Go入门
    一、Go环境搭建安装Go使用国内的Go语言中文网 https://studygolang.com/dl 进行下载找到合适的平台点击链接下载即可,这里以Windows为例下载完成后点击安装保持默认即可安装后Go将自动设置环境变量,打开终端或CMD窗口验证Go命令是否可用goversion若安装......
  • 初学者:神经网络(2)
          上一篇文章中我们说神经网络的基本结构,神经网络训练的基本原理,这篇文章我们先来说一说神经网络中一个特别重要的东西---激活函数。      还是引用上一篇文章的老图。      如果按照上图的结构来输出最终的结果,那么计算过程如下:hj=i=1nxicijy=j=......
  • 第一部分:基础知识 9 . 视图 --[MySQL轻松入门教程]
    在MySQL中,视图(View)是一个命名的SQL查询,它被存储在数据库目录中。视图可以包含来自一个或多个表的数据,并且可以像真实表一样被查询。下面是对MySQL视图的详细讲解:创建视图使用CREATEVIEW语句来创建视图。语法如下:CREATE[ORREPLACE][ALGORITHM={UNDEFINED|MERGE......
  • java从入门到起飞 day03
    day03运算符和表达式运算符:对字面量或者变量进行操作的符号表达式:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。常见运算符小细节只有整数参与计算,结果只能得到整数,有小数部分则......
  • java从入门到起飞 day04
    day04条件判断语句ifif(表达式){语句体;}if的注意事项1.大括号建议跟在第一行末尾if(表达式){语句体;}//而不建议if(表达式){//第二行语句体;}2.语句体只有一句时,大括号省略不写(还是建议写)if(表达式)语句体;3.对布尔类型变量判......