2017-08-05 14 views
0

私のデータはこのように見えます。彼らは浮動小数点数であり、大量の配列になっています[700000,3]。空のフィールドはありません。さまざまなサイズの入力データをニューラルネットワークに入力する良い方法はありますか? (Tensorflow)

Label | Values1 | Values2 
1.  | 0.01  | 0.01 
1.  | ...  | ... 
1.  | 
2.  | 
2.  | 
3.  | 
... 

考え方は、values1とvalues2のセットを入力し、分類を使用してラベルを識別させることです。

しかし、データを行単位で入力するのではなく、ラベル1に属するすべての値1/2をセットとして入力します(たとえば、最初の3行を入力すると[1,0、.. 。]、次の2行を集合[0,1、...]として入力)

このようにデータを供給するのは複雑ではありませんか? (つまり、列のラベルが1の場合のフィードバッチ)

私は現在、データをソートしています。開始点へのポインタの使用について考えています。次の行が現在のものと等しいかどうかをチェックするループを持っています。そのバッチの行数を取得します。しかし、これは多かれ少なかれランダム化入力順序を防ぎます。

答えて

1

あなたがnumpyの配列にデータを持っているので、(あなたは数字(この場合は1.)で、各行のゼロ番目の要素を比較してのみ選択されます

single_digit = data[(data[:,0] == 1.)][: , 1:] 

を使用することができる、のはdataそれを呼びましょうラベル1.を持つ行これらの行から、第1要素と第2要素、すなわちValues1とValues2を取ります。以下の作業例を参照してください。forループを使用して、データセットに含まれるすべてのラベルを繰り返し処理し、numpyラベルごとの配列

single_digit = data[(data[:,0] == label_of_this_iteration)][: , 1:] 

これらのアレイをネットワークに供給します。 TensorFlowでは、対応するプレースホルダの最初のディメンションを指定しないと、異なる長さのバッチを簡単にフィードできます。

import numpy as np 
# Generate some data with three columns (label, Values1, Values2) 
n = 20 
ints = np.random.randint(1,6,(n, 1)) 
dous = np.random.uniform(size=(n,2)) 
data = np.hstack((ints, dous)) 
print(data) 

# Extract the second and third columns of all rows having the label 1.0 
ones = data[(data[:,0] == 1.)][: , 1:] 
print(ones) 
0

理想的には、TFRecords形式を使用します。

このアプローチは

データセットとネットワークアーキテクチャ、それが混在しやすくし、試合になりここ構造のように、このJSONはexample.proto

のように見えるもので、詳細についてのリンクです
関連する問題