Tensor에서 훈련 된 신경 모델을 사용하여 예측을 수행하는 데 문제가 있습니다. 여기 내 시도입니다 :Tensorflow의 두 계층 훈련 된 신경 모델에 대한 예측
import tensorflow as tf
import pandas, numpy as np
dataset=[[0.4,0.5,0.6,0],[0.6,0.7,0.8,1],[0.3,0.8,0.5,2],....]
X = tf.placeholder(tf.float32, [None, 3])
W = tf.Variable(tf.zeros([3,10]))
b = tf.Variable(tf.zeros([10]))
Y1 = tf.matmul(X, W) + b
W1 = tf.Variable(tf.zeros([10, 1]))
b1 = tf.Variable(tf.zeros([1]))
Y = tf.nn.sigmoid(tf.matmul(Y1, W1) + b1)
# placeholder for correct labels
Y_ = tf.placeholder(tf.float32, [None, 1])
init = tf.global_variables_initializer()
# loss function
cross_entropy = -tf.reduce_sum(Y_ * tf.log(Y))
optimizer = tf.train.GradientDescentOptimizer(0.003)
train_step = optimizer.minimize(cross_entropy)
sess = tf.Session()
sess.run(init)
for i in range(1000):
# load batch of images and correct answers
batch_X, batch_Y = [x[:3] for x in dataset[:4000]],[x[-1:] for x in dataset[:4000]]
train_data={X: batch_X, Y_: batch_Y}
sess.run(train_step, feed_dict=train_data)
correct_prediction = tf.equal(tf.argmax(Y,1), tf.argmax(Y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
a,c = sess.run([accuracy, cross_entropy], feed_dict=train_data)
test, lebs=[x[:3] for x in dataset[4000:]],[x[-1:] for x in dataset[4000:]]
test_data={X: test, Y_: lebs}
a,c = sess.run([accuracy, cross_entropy], feed_dict=test_data)
prediction=tf.argmax(Y,1)
print ("predictions", prediction.eval({X:test}, session=sess))
I받은 나는 위의 코드를 실행했을 때 결과를 다음
이predictions [0 0 0 ..., 0 0 0]
내 예상 출력 클래스 레이블되어야한다 :
predictions `[0,1,2....]`
내가 주셔서 감사합니다 당신의 제안.
초기화 :
자세한 설명을 해주신 것에 대해 많은 감사드립니다. 귀하가 언급 한 내용을 인터넷을 통해 몇 시간 동안 보냈으며, 조정 작업을 완료했으며 이제는 완벽하게 작동합니다. 저는 약 93 %의 정확도를 얻었고 다른 학습 속도와 뉴런을 시도하고 있습니다. 심지어 세 개의 레이어로 확장 될 수도 있습니다. 다시 한번 감사드립니다. – user2274879