LSTMをようやく理解し、実験を進めていたところである障害にぶつかりました。
timstepを広げていくと、データ作成が戻ってこなくなったのです・・・

最初は2~3分だったので、”7万件もあるから時間かかるな”程度だったのですが、10分経っても終わらなくなりました。

そこで色々調べたところ、原因はCSVから読み込んだデータを加工して配列にする際のnumpyの処理速度にあることがわかりました。(コーディングが悪いともいう・・・)

例1:最初のコーディング(配列の追加にnumpy.appendを使っている)


def data_load1(fname, timesteps=1, distance=1):
    indata = pd.read_csv(filename)
    data = indata[0:][['Close']]
    docX = np.array([])
    docX = np.append(docX,data[0:timesteps])

    for i in range(1, data.shape[0] - (timesteps+distance - 1)):
        docX = np.append(docX, data[i:i+timesteps])

    docX = np.reshape(docX,(int(docX.shape[0]/timesteps),timesteps,1))

    return docX

例2:改善版コーディング(配列の追加に、array.appendを使っている)


def data_load2(fname, timesteps=1, distance=1):
    indata = pd.read_csv(filename)
    data = np.array(indata[0:][['Close']])         
    docX = []
    docX.append(data[0:timesteps])
    
    for i in range(1, data.shape[0] - (timesteps+distance - 1)):
        docX.append(data[i:i+timesteps])
    docX = np.array(docX)
    docX = np.reshape(docX,(docX.shape[0],docX.shape[1],1))
    
    return docX

上記の2例で、timestetpを変えて実行してみると、こんなに差がでます!!

特にtimestepが大きくなる(時系列方向に深くなる)と圧倒的な差がでます。

これに気付いてから、実験が少し快適になりました!。

まぁ、まだ成果はでていないんですけどね・・・
・回帰にするとそれっぽくできるが、分類にすると全く損失関数が減らない
問題に直面しています。

dtは、分類にして「〇〇上がる確率△△%」とかしたいのです(´・ω・`)


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です