2016-09-10 15 views
0

とすると、batch_size = 64とする。 バッチを作成しました:batch = np.zeros((self._batch_size,), dtype=np.int64)私は、サイズがbatch = ['o', 'w', ....'s']で、サイズが'o'batch = ['o', 'w', ....'s'][0,0, .... 0]のサイズ1のホット・ベクトルで表されるとします。 したがって、バッチは依然としてbatch_sizeの形状を持ち、batch_size x vocabulary_sizeではないというような方法はありますか? BATCH_SIZE X vocabulary_sizeの寸法とPython/Numpy配列の次元の混乱

batch = np.zeros((self._batch_size,), dtype=np.int64) 
temp1 = list() 
for b in range(self._batch_size): 
    temp = np.zeros(shape=(vocabulary_size), dtype=np.int64) 
    temp[char2id(self._text[self._cursor[b]])] = 1.0 
    temp1.append(temp) 
    self._cursor[b] = (self._cursor[b] + 1) % self._text_size 
batch = np.asarray(list) 
return batch 

この戻りバッチを次のように コードです。

batch = np.zeros((self._batch_size,), dtype=np.int64) 
for b in range(self._batch_size): 
    batch[b, char2id(self._text[self._cursor[b]])] = 1.0 
    self._cursor[b] = (self._cursor[b] + 1) % self._text_size 
return batch 

このコードは、あまりにも多くのインデックスのエラーを返します。
配列サイズを[batch_size :, None]と指定する方法はありますか?

+0

64バッチの27個の値(0と1)をどのように表現すると思いますか?一度作成されると、配列で何をするつもりですか? – hpaulj

答えて

1

batchasarray(temp1)の後に置き換えられるため、最初のブロックでbatchからzerosの初期化は何も行いません。 (私の訂正に注意してください)。 temp1は1d配列(temp)のリストであり、2次元アレイを生成します。

batch=np.zeros((batch_size, vocab_size))で始まる場合は、インデックス番号のエラーを避けることができます。

実数の代わりにNoneを使用することはできません。 Noneはブロードキャストのように動作しませんnewaxisここにあります。新しい大きなインデックスを割り当てることによって配列は成長しません。 np.zeros((batchsize,))[:,None]のインデックスに使用した場合でも、結果は2d、shape(バッチサイズ、1)になります。

なぜ1dアレイが必要ですか?配列(または他のオブジェクト)を含むdtypeオブジェクトの1次元配列を構築することは可能ですが、多くの目的のためには栄光のリストに過ぎません。

+0

テンソルフローの関数embedded_lookup()に必要でした。入力は次元(batch_size、)でなければなりません。あなたが言及していたdtypeオブジェクトの1d配列を作成するには? – SupposeXYZ