공식 사이트 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에 새로 온 사람을, 어떤 도움도 환영 할 것이다.
편집
내 실제 훈련 데이터는 내가, 내가 더 큰 코퍼스 필요 그래서 아마, 내가 잘 시도하고 새로운 편집 내 출력을 보여줍니다 된 8 개 클래스와 예측에 그것을 시도 this.
입니다 . EDIT2
은 이제 다섯 층 [N, 2N, 4N, 8N, 16N : n 번째 클래스와 같이 = 20000의 조성물을 사용하여,이 손실을 감소시키고 실제로 잘 정확성을 높이지만 다시 한번 더 많은 양의 예측 (10 개 aprox)으로 예측이 잘못되게됩니다.
첫째, 신경 네트워크는 학습 데이터의 스냅 샷을 저장하지 않습니다. 따라서 훈련 된 네트워크가 교육용 데이터에 대해 올바른 레이블을 출력 할 것으로 기대하지는 마십시오. 이러한 문제는 일반적으로 교육 자료가 충분하지 않아 발생합니다. 더 큰 훈련 세트를 사용해 보셨습니까? 추가 도움이 필요하면 연수에 대한 링크를 공유하십시오. –
[data] (https://drive.google.com/open?id=0B3uEZ76zDg_wNXJnT3g5c0lWWjQ) 이것은 내 데이터입니다.이 경우 더 필요하다고 생각하십니까? 나는 60 개의 샘플 (값)과 8 개의 클래스 (타겟)와 같은 더 작은 세트로 같은 코드를 시도한다.그리고 예측이 좋았습니다. 그래서 더 많은 클래스 (타겟)가있을 때 더 많은 데이터가 필요하다고 생각했습니다. 도와 주셔서 감사합니다! –
입력은 단지 두 단어입니까? – Aaron