图说起来可能更直观些:
Tensor是一个高维数组,每单一个样本是一个Input_Size*Time_Step的二维矩阵,其中Input_Size 代表观察的特征数量,比如我需要用电池的电压电流和温度来预测SoC,此时Input_Size为3 。 Time_Step代表窗口的宽度。 而Batch_Size借评论里@ViVi 的话说,“就是表示有batch_size个这样的二维矩阵送入网络中训练“。
以及,附送一个随机抽取batch的小方法:
笔芯
以下为原答,年轻人还是轻狂。。。
##################################################################
愚以为,在上各位答主, 说的都不对。。。
理论上没问题, 但是实际在设置RNN的时候, 如果这么理解的话估计训到明年也训不出。
一般在给训练集的时候都会用的Dataloader, 此时就已经涉及到了一次BATCH_SIZE。再以pytorch为例, 在定义torch.nn.RNN()的时候,根据问题种类不同batch 和time_seq的含义不同:图片分类:Dataloader 里的BS表示一次给几张图片。RNN的batch和time_seq分别为图片像素的长宽。 此时不需要特别区分。
语句预测:BS指一次给几段话, 而此时time_seq代表了把一段话分成几句,batch表示每句话里有多少个字。
时间预测:这个就非常关键了。 BS表示一次给多长时间的数据量, time_seq代表把这段时间再划分为几小段时间,而 batch 则是每小段时间里有多少数据量。 而RNN展开的时间长度其实是batch的值。
我之前做时间预测的时候,BS设为100,且希望RNN展开100步。 参照其他答主的回答, 把time_seq设为了100,然后在迷途中游荡了半个月,train的时候误差e-3量级,一test压根不拟合。直到在github上看了语句预测的例子,才发现概念完全弄反了。
以上。如有指正欢迎赐教。