1

Kaggle でタイタニック問題を解決しようとしていますが、特定のテスト データの出力を取得する方法がわかりません。

ネットワークを正常にトレーニングし、メソッドを呼び出しますmake_prediction(x, test_x)

x = tf.placeholder('float', [None, ip_features])
...
def make_prediction(x, test_data):
  with tf.Session() as sess :
    sess.run(tf.global_variables_initializer())
    prediction = sess.run(y, feed_dict={x: test_data})
    return prediction


np.arrayこの場合、予測を含むtest_dataa を取得するために a を渡す方法がわかりませんnp.array0/1

完全なコードへのリンク

4

1 に答える 1

1

あなたの機能train_neural_networkmake_prediction機能を 1 つの機能にまとめました。モデル関数に適用するtf.nn.softmaxと、値の範囲が 0 ~ 1 (確率として解釈) になり、tf.argmax確率が高い列番号が抽出されます。placeholderこの場合のforyは、ワンホット エンコードする必要があることに注意してください。(ここで y をワンホット エンコーディングしていない場合はpred_y=tf.round(tf.nn.softmax(model))、出力softmaxを 0 または 1 に変換します)

def train_neural_network_and_make_prediction(train_X, test_X):

    model = neural_network_model(x)
    cost = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(model, y) )
    optimizer = tf.train.AdamOptimizer().minimize(cost)
    pred_y=tf.argmax(tf.nn.softmax(model),1)

    ephocs = 10

    with tf.Session() as sess :
        tf.initialize_all_variables().run()
        for epoch in range(ephocs):
            epoch_cost = 0

            i = 0
            while i< len(titanic_train) :
                start = i
                end = i+batch_size
                batch_x = np.array( train_x[start:end] )
                batch_y = np.array( train_y[start:end] )

                _, c = sess.run( [optimizer, cost], feed_dict={x: batch_x, y: batch_y} )
                epoch_cost += c
                i+=batch_size
            print("Epoch",epoch+1,"completed with a cost of", epoch_cost)
        # make predictions on test data
        predictions = pred_y.eval(feed_dict={x : test_X})
    return predictions
于 2016-12-06T20:18:15.347 に答える