2017-01-01 78 views
0

我將對圖像執行基於像素的分類。下面是我用於訓練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) 

的問題是,訓練模型,p.array結果後(model.predict(x_test))爲1只,雖然我希望這是無論是2或3.在一個例子中,我有4類對象,我期望該命令的結果是2和5之間的標籤(注意:y_train的int值介於2和5之間),但預測的輸出功能是1.這可能是訓練階段的問題嗎?

+0

你絕對需要增加'n_epoch'。我沒有使用'tf_learn'軟件包,但是當你的問題是分類時,你如何使用'regression'? – martianwars

+0

我是新手,只想做一些測試,並從TFlearn網頁https://github.com/tflearn/tflearn/blob/master/examples/images/rnn_pixels.py – user2148425

+0

複製此代碼嘗試增加'n_epoch'到5或10,看看是否有幫助?你是否一直在所有測試數據中獲得'1'? – martianwars

回答

0

None參數用於表示不同的訓練實例。對於您的情況,由於您使用的是自定義四通道數據集,因此每個圖像總共有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()將對應於一個單一的四個不同渠道numpy陣列的最後一個維度中的像素,而28, 28對應於單個圖像中的像素。


如果您的圖片沒有尺寸28*28,請相應地調整這些參數。

+0

不確定。我跟着這裏的例子https://github.com/tflearn/tflearn/blob/master/tutorials/intro/quickstart.md。在我的情況下,我需要將6更改爲4,因爲每個像素都有4個特徵。但預測結果仍然是1,儘管我期望1和2. 1標籤對應於綠色像素和2到棕色像素。 – user2148425

相關問題