我嘗試使用tensorflow在官方網站tf.contrib.learn Quickstart的例子,但用自己的數據做一個句子分類,首先我我的所有數據(這是不同長度的字符串)轉換爲IDS通過字典的使用等等,用整數數組來轉換每個句子。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所以我儘量讓它不太複雜的可能,任何幫助將受到歡迎。
編輯
我的實際訓練數據this.
我嘗試用8類和預測是很好,所以也許我需要一個更大的文集,我會盡量表現出我的輸出在一個新的編輯。
EDIT2
現在我用五層[N,2N,4N,8N,16N],其中n =類和步驟= 20000的組合物,這降低了損耗和提高精度確實很好,但再次它只是與一些目標(10 aprox)與更大的數額預測變得錯誤的工作。
首先,神經網絡_DO not_存儲訓練數據的快照。所以你不應該指望訓練有素的網絡甚至會輸出正確的訓練數據標籤。這些問題通常是由於培訓數據不足造成的。你有沒有嘗試使用更大的訓練集?如果您需要進一步幫助,請與您的訓練集共享一個鏈接。 –
[數據](https://drive.google.com/open?id=0B3uEZ76zDg_wNXJnT3g5c0lWWjQ)這是我的數據,你覺得我需要更多的這種情況?我嘗試使用相同的代碼,例如60個樣本(值)和8個類別(目標)。預測是好的,所以我在想,也許我需要更多的數據時,有更多的類(目標)。謝謝您的幫助! –
輸入只是兩個字? – Aaron