2017-12-16 20 views
1

안녕하세요, 나는 tensorflow에 꽤 새로 왔습니다. 나는 기본적으로 0/1로 분류되는 분류 모델을 구축 중입니다. 출력 1의 확률을 예측할 수있는 방법이 있습니까? 여기에서 predict_proba를 사용할 수 있습니까? 그 널리 tflearn.dnn에서 사용하지만 내 경우에는 그것을 할 어떤 참조를 찾을 수 없습니다. 여기classfier tensorflow에서 확률 예측

def main(): 
    train_x,test_x,train_y,test_y = load_csv_data() 
    x_size = train_x.shape[1] 
    y_size = train_y.shape[1] 

    print(x_size) 
    print(y_size) 
    # variables 
    X = tf.placeholder("float", shape=[None, x_size]) 
    y = tf.placeholder("float", shape=[None, y_size]) 
    weights_1 = initialize_weights((x_size, h_size)) 
    weights_2 = initialize_weights((h_size, y_size)) 
    # Forward propagation 
    y_pred = forward_propagation(X, weights_1, weights_2) 
    predict = tf.argmax(y_pred, dimension=1) 
    # Backward propagation 
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=y_pred)) 
    updates_sgd = tf.train.GradientDescentOptimizer(sgd_step).minimize(cost) 
    # Start tensorflow session 

    with tf.Session() as sess: 

     init = tf.global_variables_initializer() 
     steps = 1 
     sess.run(init) 
     x = np.arange(steps) 
     test_acc = [] 
     train_acc = [] 
     print("Step, train accuracy, test accuracy") 
     for step in range(steps): 
      # Train with each example 
      batch_size = len(train_x) 
      avg_cost = 0 
      print(batch_size) 
      for i in range(len(train_x)): 
       _, c = sess.run([updates_sgd,cost], feed_dict={X: train_x[i: i + 1], y: train_y[i: i + 1]}) 
       print(c) 
       avg_cost += c/batch_size 

      train_accuracy = np.mean(np.argmax(train_y, axis=1) == 
            sess.run(predict, feed_dict={X: train_x, y: train_y})) 
      test_accuracy = np.mean(np.argmax(test_y, axis=1) == 
            sess.run(predict, feed_dict={X: test_x, y: test_y})) 

      print(avg_cost) 
      print("%d, %.2f%%, %.2f%%" 
        % (step + 1, 100. * train_accuracy, 100. * test_accuracy)) 

      test_acc.append(100. * test_accuracy) 
      train_acc.append(100. * train_accuracy) 

     predict = tf.argmax(y_pred,1) 
     test_data = load_test_data() 
     print(test_data) 
     pred = predict.eval(feed_dict={X:test_data}) 
     print(pred) 
     for x in range(0,100): 
      print(pred[x]) 
     print(np.unique(pred)) 
main() 

답변

0

당신은 확률의 argmax 걸릴 : 당신은 단순히 "y_pred"돌아 가면 당신이 확률을 얻어야한다

predict = tf.argmax(y_pred, dimension=1) 

.

+1

쿨! 감사 :) – sumit