2017-01-01 16 views
0

画像にピクセルベースの分類を行います。ここでは、問題は、モデルを訓練した後、p.arrayの結果(model.predict(x_test))は私はこのどちらかであることが期待1だけがあることであるNNテンソルフローの予測関数の出力が正しくありません

net = input_data(shape=[None, 1,4]) 
net = tflearn.lstm(net, 128, return_seq=True) 
net = tflearn.lstm(net, 128) 
net = tflearn.fully_connected(net, 1, activation='softmax') 
net = tflearn.regression(net, optimizer='adam', 
         loss='categorical_crossentropy') 
model = tflearn.DNN(net, tensorboard_verbose=2, checkpoint_path='model.tfl.ckpt') 
X_train = np.expand_dims(X_train, axis=1) 
model.fit(X_train, y_train, n_epoch=1, validation_set=0.1, show_metric=True,snapshot_step=100) 

を訓練するために使用されるコードであります2つまたは3つのクラスのオブジェクトがあり、そのコマンドの結果が2から5の間のラベルになると予想した(y_trainは2から5の間のint値を持つ)が、予測の出力機能は1です。それはトレーニング段階の問題でしょうか?

+0

あなたは間違いなく 'n_epoch'を増やす必要があります。私は 'tf_learn'パッケージを使っていませんが、あなたの問題が分類のときに' regression'をどのように使うことができますか? – martianwars

+0

私は初心者ですが、TFlearnのWebページ(https://github.com/tflearn/tflearn/blob/master/examples/images/rnn_pixels.py)からこのコードをコピーしたばかりです。 – user2148425

+0

'n_epoch'を増やしてみてください5または10にして、役立つかどうか確認してください。すべてのテストデータに一貫して '1'を得ていますか? – martianwars

答えて

0

Noneパラメータは、異なるトレーニング例を示すために使用されます。あなたのケースでは、使用しているカスタム4チャンネルのデータセットのため、各画像の合計が28*28*4になります。このLSTMを動作させるために

、次の操作を行うようにしてください -

もちろん
X = np.reshape(X, (-1, 28, 28, 4)) 
testX = np.reshape(testX, (-1, 28, 28, 4)) 

net = tflearn.input_data(shape=[None, 28, 28, 4]) 

(これは非常に重要です)reshape()が単一に対応した4つの異なるチャネルを置くことを確認してくださいnumpy配列の最後の次元のピクセル、および28, 28は、単一のイメージ内のピクセルに対応します。


あなたのイメージがそれに応じて、次元28*28を持っているそれらのパラメータを調整していない場合。

+0

わかりません。私はここの例をhttps://github.com/tflearn/tflearn/blob/master/tutorials/intro/quickstart.mdに続けました。私の場合、各ピクセルに4つの特徴があるので、6から4に変更する必要があります。しかし、予測結果は、1と2が予想されますが、常に1です.1ラベルは緑のピクセルに対応し、2は茶色のピクセルに対応します。 – user2148425

関連する問題