2016-10-19 10 views
0

非常に多くの要素を含む配列を作成したい 配列数(バッチサイズ)*辞書サイズ(ファイル内のユニークワード) 474683 * 22995大きな2次元配列のケラス入力形状

は、各シーケンスは、ビットのいくつかの数Xが

辞書に単語を表しているがオンになっているだろう文は次のとおりです。 「私は最高の王だ」辞書があると言うことができます:

[I、アム、キング、ベスト、動物、トースト、...]

シーケンスは次のようになります。

[1,1,1,1,1,0,0、...]

私はkerasにこれをインポートしようと、私はエラーを取得します:

例外:hereから期待される3次元を持っているlstm_input_9が、形状(93371、22995)を持つ配列を得た

我々はkerasが期待していることがわかります:モデル入力エラーチェック (BATCH_SIZE、sequence_length、input_dimension)

これについて何ができますか?

配列の長さが20であるナンピー配列を作成しようとすると、メモリエラー(26GBなど)が発生します。

答えて

0

さて、私が代わりにメモリにすべてをプッシュするのスプリットのそれぞれに配列し、電車を分割することにしました。もちろん

data_cut = 3 

X = np.zeros((len(inputs)/data_cut, max_len, len(words)), dtype=np.bool) 
y = np.zeros((len(inputs)/data_cut, len(words)), dtype=np.bool) 


# set the appropriate indices to 1 in each one-hot vector 
ins = [] 
for cuts in range(0,data_cut):#number of cuts 
    cutLocation = len(inputs)/data_cut*cuts#location of cut 
    start = (cutLocation) 
    end = (len(inputs)/data_cut) * (cuts + 1) 
    ins.append(inputs[start:end])#first half 
    for i, example in enumerate(ins[cuts]): 
     for t, word in enumerate(example): 
      X[i, t, word_labels[word]] = 1 
     y[i, word_labels[outputs[i]]] = 1 
    model.fit(X, y, batch_size=64, nb_epoch=epochs) 

は、あなたがして分割分割数を超える訓練したいです。

誰かがこれをより効率的にするために刺す場合は、以下に記入してください。