私は公式サイトtf.contrib.learn Quickstartの例のようにtensorflowを使って文章分類器を作ろうとしますが、私自身のデータを使ってまずすべてのデータ(長さの異なる文字列)を辞書を使用し、各文を整数の配列に変換します。Tensorflow DNNClassifierは間違った予測を返す
トレーニング用の各レコードには、独自のラベルが割り当てられています。
予測は正確ではなく、一部のみであるが、入力がトレーニングベースのレコードと同じであっても、結果が間違っているという問題があります。
私のコードは次のようになります。
def launchModelData(values, labels, sample, actionClasses):
#Tensor for trainig data
v = tf.Variable(values)
l = tf.Variable(labels)
#Data Sample
s = tf.Variable(sample)
# Build 3 layer DNN with 10, 20, 10 units respectively.
classifier = tf.contrib.learn.DNNClassifier(hidden_units=[10, 20, 10], n_classes=actionClasses)
# Add an op to initialize the variables.
init_op = tf.initialize_all_variables()
# Later, when launching the model
with tf.Session() as sess:
# Run the init operation.
sess.run(init_op)
# Fit model.
classifier.fit(x=v.eval(), y=l.eval(), steps=200)
# Classify one new sample.
new_sample = np.array(s.eval(), dtype=int)
y = classifier.predict(new_sample)
print ('Predictions: {}'.format(str(y)))
return y
値とクラスのaxample:
[0 1] 0
[0 2] 0
[0 4] 0
[7 8] 1
[7 9] 1
[ 7 13] 1
[14 15] 2
[14 16] 2
[14 18] 2
[20 21] 3
[26 27] 5
[29 27] 5
[31 32] 5
...
私はtensorflowする新たなんだので、私は任意のヘルプは大歓迎だろう、可能なことはあまり複雑にしてみてください。
EDIT
私の実際のトレーニングデータは、私は、私は大きなコーパスを必要とするので、多分、私は罰金試してみて、新しい編集で私の出力が表示されますし、8クラスと予測して、それを試してみてくださいthis.
です。
EDIT2
今は5層[N、2N、4N、8N、16N]ここで、n =クラスおよびステップ= 20000の組成物を使用し、これは損失を低減し、本当によく精度を高めるが、再び、それはちょうどいくつかのターゲット(10 aprox)を使ってより大きな量の予測が間違ったものになります。
まず、ニューラルネットワークは、トレーニングデータのスナップショットを保存しません。したがって、訓練されたネットワークが訓練データの正しいラベルを出力することを期待するべきではありません。このような問題は、通常、トレーニングデータが不十分なために発生します。より大きなトレーニングセットを試しましたか?さらなる助けが必要な場合は、トレーニングセットへのリンクを共有してください。 –
[data](https://drive.google.com/open?id=0B3uEZ76zDg_wNXJnT3g5c0lWWjQ)これは私のデータですが、この場合はもっと必要と思われますか?私は60サンプル(値)と8クラス(ターゲット)のような小さなセットで同じコードを試してみてください。予測が良いので、もっとクラス(ターゲット)があるときはもっとデータが必要だと思っていました。助けてくれてありがとう! –
入力はわずか2単語ですか? – Aaron