神经网络数据预处理 将序列转换成矩阵 循环和索引两种方法时间对比

有两种方法完成数据预处理,一种是写循环,另一种是生成索引矩阵,然后索引,下面来看下时间

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 13 10:55:19 2021
在神经网络中将序列转换为滑窗矩阵的算法时间对比
@author: user
"""

import time
import numpy as np
import torch
import matplotlib.pyplot as plt


def window_stack(a,stepsize,row,col):
# a:输入的numpy
# stepsize: 滑动步长
# row & col: 输出矩阵的维度[row,col]
    # b = torch.squeeze(a, 1) # 输入a的维度,如[500,1],如果是[500],删除这段话
    ind = np.arange(col)[None,:] + stepsize*np.arange(row)[:,None]
    w = a[ind]
    
    return w

inputSignal=np.random.rand(1000,)
inputSize=10
trainLen=len(inputSignal)-inputSize

startTime1=time.time()
train_data=np.empty((trainLen,inputSize))
for i in range(trainLen):
    train_data[i]=inputSignal[i:i+inputSize]
endTime1=time.time()

runTime1=endTime1-startTime1
print(runTime1)

startTime2=time.time()
train_data2=window_stack(inputSignal,1,trainLen,inputSize)
endTime2=time.time()

runTime2=endTime2-startTime2

print(runTime2)

trainLenList=[1000,10000,1e5,1e6,1e7]
time1=[0.0010311603546142578,0.010968685150146484,0.07679605484008789,0.7185516357421875,7.863290548324585]
time2=[0.0009918212890625,0.0009980201721191406,0.006011009216308594,0.08977723121643066,0.7245986461639404]
plt.xscale('log')
plt.yscale('log')
plt.plot(trainLenList,time1)
plt.plot(trainLenList,time2)
plt.title('runtime comparison of two methods')
plt.xlabel('train length')
plt.ylabel('time/s')

 

 索引的方法比循环时间少了10倍的样子

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值