谦虚且进步 2022-11-24 16:42 采纳率: 90%
浏览 6
已结题

数据是如何feed到神经元里面的

单特征的样本如何表示为向量,他是如何输入到神经元的?
多特征的样本如何表示为向量,输入到神经元的过程是怎么样的?
多特征时batch不是1的时候,输入到神经元的详细过程是怎么样的?
lstm将序列数据喂入模型,具体是怎么喂的呢?
如果第一层有10个神经元,样本只有batch=5,他是怎么输入的?

  • 写回答

3条回答 默认 最新

  • 爱晚乏客游 2022-11-24 17:55
    关注
    1. 怎么传入神经元,这个涉及到接口的概念,你可以简单点的认为就是一个函数,这个函数的参数按照固定的格式传入。举例来说,c语言函数:
      int func(int arg,char *argc){
      ...
      return0;}
      
      他有两个参数,第一个函数接收一个int类型的数据,第二个参数接收一个char*的字符串,只要你按照你这个格式输入即可,至于下面怎么对这些数据进行处理,是函数的事情,你只要知道输入这两个固定格式的参数,调用方式如下
      int a=0;
      char *s="abc"
      int res=fun(a,s);
      
      他会返回一个int类型的数据。
      而神经元也是一样,你可以认为他就是一个函数接口,这个接口接受向量(更为准确的说,一般都是神经网络都是用的框架,参数数据类型为张量tensor),只要你将这个张量传入神经元即可。大概就是这个意思,只不过由于接口概念的存在,实际代码情况会更为的复杂,你只要知道调用神经元的时候传入参数就是将数据输入到神经元的过程。
    2. 至于第二点,单个特征与多特征,就是向量的维度不同。使用你的LSTM来说,输入格式一般为[batch, seq_len, input_size](当然,这个是batch在前的格式,有些是batch在后,这个先不论,你只要知道格式的意思即可)),batch就是一批数据有多少个[seq_len, input_size]同时输入网络,每个batch之间计算是独立的,相当于batch=1的情况,计算了batch次,唯一的不同在于,batch=1的时候loss就是一次,batch不为1的时候,loss是多个batch的loss结果累加(或者其他处理方式,比如均值等等)。seq_len就是时序特征,同一时刻的特征有seq_len个(比如,同一时刻的气温,压强,风速,这个就是3个时序特征,来表达此时的降雨量等);而后面的input_size这里,就是特征的维度是多少维的,比如说风速有方向和风速等级,就是[方向,等级]^T,气温有[温度,湿度]^T,压强有[压强大小,压强方向]^T,等这种用这两个值或者多个值组成一个向量来表达这个时刻的时序特征。而这几个关系和神经元的关系可以看下面的图示,神经元个数就是隐含层节点个数

      img


      img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 11月24日

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?