2017-07-06 15 views
1

私はTensorflowで畳み込みニューラルネットワークを作成するためにthis tutorialを探していました。新しいデータに畳み込みニューラルネットワークを実行する方法

ニューラルネットワークが構築され、訓練された後、チュートリアルでは、それは次のようにテストされます。

eval_results = mnist_classifier.evaluate(
    x=eval_data, y=eval_labels, metrics=metrics) 
print(eval_results) 

しかし、私は、テストセットのラベルを持っていないので、私はそれを実行したいですちょうどこのような訓練例、と:しかし、私はこの警告を取得していることを私が行う場合

eval_results = mnist_classifier.evaluate(x=test_data, metrics=metrics) 

実行が停止します

WARNING:tensorflow:From ../src/script.py:169: calling BaseEstimator.evaluate (from tensorflow.contrib.learn.python.learn.estimators.estimator) with x is deprecated and will be removed after 2016-12-01. 
Instructions for updating: 
Estimator is decoupled from Scikit Learn interface by moving into 
separate class SKCompat. Arguments x, y and batch_size are only 
available in the SKCompat class, Estimator will only accept input_fn. 
Example conversion: 
    est = Estimator(...) -> est = SKCompat(Estimator(...)) 
Traceback (most recent call last): 
    File "../src/script.py", line 172, in <module> 
    main() 
    File "../src/script.py", line 169, in main 
    eval_results = mnist_classifier.evaluate(x=test_data, metrics=metrics) 
    File "/opt/conda/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 289, in new_func 
    return func(*args, **kwargs) 
    File "/opt/conda/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 530, in evaluate 
102.5s 
7 
    return SKCompat(self).score(x, y, batch_size, steps, metrics) 
    File "/opt/conda/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 1365, in score 
    name='score') 
    File "/opt/conda/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 816, in _evaluate_model 
    % self._model_dir) 
tensorflow.contrib.learn.python.learn.estimators._sklearn.NotFittedError: Couldn't find trained model at /tmp/mnist_convnet_model. 

答えて

1

mnist_classifier.evaluateyパラメーターなしで評価することはできません。

代わりにy = mnist_classifier.predict(x=x)を使用して結果を取得し、正しいかどうかを確認してください。

しかし、ネットワークが新しい情報をどのように扱っているかを反映しない良い結果につながる可能性があるため、ネットワークで既に訓練されたデータでこれを行うことは非常に悪い考えです。

xyの引数は、とにかく廃止されていますが、引き続き使用することができるため、警告は正常です。警告を消す場合は、tf

EDIT:また、私はそれについて考えると、訓練セットのラベルはどのようにして、テストセットではないのですか?tf.logging.set_verbosity(tf.logging.ERROR)を追加する必要があります。トレーニングデータとラベルを分割して、ほとんどのものが訓練されるようにする必要がありますが、その一部は訓練されているため、正確に保管することができます。evaluate

+0

私はKaggleテストセットのために。 – octavian

+0

次に、訓練データを90%のトレーニングに分割し、10%が未評価のままにしておくことを強くお勧めします(実際のデータ量に応じてパーセンテージが評価されます)。そのテストデータは 'predict'でのみ使用し、返された結果を解析します。 –

関連する問題