2016-10-06 5 views
0

私はTic-Tac-ToeをプレイするためにDQNをトレーニングしようとしています。私はXをプレイするように訓練しました(Oの移動はランダムです)。トレーニングの12時間後、それは正常に再生されますが、完璧ではありません。今私は2つのネットを同時に訓練したいと思います.1つはXの動き、もう1つはOの動きです。 しかし、私は第二のネットワーク上model.predict(状態を)やるしようとすると、私のようなエラーが出る:TFlearnで2つのネットを使用するには?

ValueError: Cannot feed value of shape (9,) for Tensor 'InputData/X:0', which has shape '(?, 9)' 

をしかし、私はネットワークの定義とデータの寸法が同一であることSHUREのために知っています。 2つのDNNを定義するものがあります。ここで

は一般的な例である:エラーが原因で私が呼ぶ私の三目並べで最初に行うよりも早く二DNNに予測異なる

Traceback (most recent call last): 
    File "2_dnn_test.py", line 25, in <module> 
    m2.fit(X, Y, n_epoch = 20) 
    File "/home/cpro/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tflearn/models/dnn.py", line 157, in fit 
    self.targets) 
    File "/home/cpro/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tflearn/utils.py", line 267, in feed_dict_builder 
    feed_dict[net_inputs[i]] = x 
IndexError: list index out of range 

:よう

import tflearn 
import random 

X = [[random.random(),random.random()] for x in range(1000)] 
#reverse values order like [1,0] -> [0,1] 
Y = [[x[1],x[0]] for x in X] 

n = tflearn.input_data(shape=[None,2]) 
n = tflearn.fully_connected(n, 2) 
n = tflearn.regression(n) 
m = tflearn.DNN(n) 

m.fit(X, Y, n_epoch = 20) 
#should print like [0.1,0.9] 
print(m.predict([[0.9,0.1]])) 

n2 = tflearn.input_data(shape=[None,2]) 
n2 = tflearn.fully_connected(n2, 2) 
n2 = tflearn.regression(n2) 
m2 = tflearn.DNN(n2) 

# set second element value to first e.g. [1,0] -> [1,1] 
Y = [[x[0],x[0]] for x in X] 

m2.fit(X, Y, n_epoch = 20) 
#should print like [0.9,0.9] 
print(m2.predict([[0.9,0.1]])) 

エラーになりますフィット()。私は同じエラーを取得する私の例ではm2.fit(X, Y, n_epoch = 20)をコメントアウトした場合:

Traceback (most recent call last): 
    File "2_dnn_test.py", line 27, in <module> 
    print(m2.predict([[0.9,0.1]])) 
    File "/home/cpro/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tflearn/models/dnn.py", line 204, in predict 
    return self.predictor.predict(feed_dict) 
    File "/home/cpro/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tflearn/helpers/evaluator.py", line 69, in predict 
    o_pred = self.session.run(output, feed_dict=feed_dict).tolist() 
    File "/home/cpro/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 372, in run 
    run_metadata_ptr) 
    File "/home/cpro/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 625, in _run 
    % (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape()))) 
ValueError: Cannot feed value of shape (2,) for Tensor 'InputData/X:0', which has shape '(?, 2)' 

ので、2つの同一のネットワークが同時に動作しません。どのようにして両者を動作させるのですか?

ところで例が予想される予測結果を得ることはありません:)私は、グラフをデフォルトに両方のモデルを追加するTFLearnを防ぐために

with tf.Graph().as_default(): 
    #define model here 

を追加する必要がありますように

+0

keras – Julius

+1

tflearnはかなり – Julius

+0

の悪いテストコピーであるように、あなたがより良いテストモジュールを試みることができる私はtflearnと運を持っていません場合、私はそれを試してみましょう – Julius

答えて

0

が見えます。この追加ですべてが機能します。

関連する問題