2D数据转换为3D数据。converters={},view()

daily_bikes = bikes.view(-1, 24, bikes.shape[1])

运行之后报错shape’[-1,24,17]'is invalid for input of size 295443.
代码如下:

bikes_numpy=np.loadtxt('C:\\Users\\a\\Desktop\\pytorch_4\\Bike-Sharing-Dataset (2) - 副本\\hour.csv',
                       dtype=np.float32,delimiter=",",
                       skiprows=1,
                       converters={
    
    1: lambda x: float(x[8:10])})
bikes = torch.from_numpy(bikes_numpy)
bikes
daily_bikes = bikes.view(-1, 24, bikes.shape[1])
daily_bikes.shape, daily_bikes.stride()

在对csv文件数据处理之前,运行出错,情况如下:
可以看到bikes的size是17379,很明显不是24的倍数 下文的view()函数什么意思呢?

这里要实现的功能是将2D数据转换为3D。

  1. converters={1: lambda x: float(x[8:10])} 这句理解是:
    #lambda x表示对应的变量是X。
    #converters:将数据列与转换函数进行映射的字典。
    eg:{1:fun}表 示将第二列按照fun方法进行转换
  2. view与numpy中的resize函数作用差不多,将原始tensor改变形状。参数中的-1就代表这个位置由其他位置的数字来推断,只要在不致歧义的情况的下,view参数就可以推断出来。
    所谓推断,结合下文可以理解为以24为一小节,将数据分割开。要注意不是去切片。而且以24位来推断。
  3. 现在让我们删除几行csv文件中的数据,使其只有24的倍数行,比如17280(24的720倍)。
    注意csv文件是:逗号分隔值 的文件,如果用excel打开逗号就会表现为表格的一列竖线。也可以用记事本打开,经过试验我更推荐该方法
  4. 下面是修改后的情况:

在这里插入图片描述
完成~
昨晚上想不通的事情今天一早上就明白啦,真奇妙(狗头)

Guess you like

Origin blog.csdn.net/HJ33_/article/details/109109370