2016-12-30 80 views
0

我有一個包含4個波段的RGBI圖像,並希望能夠使用張量流和深度學習將圖像像素分爲兩類。 在訓練數據中,每個像素被認爲是具有4個值/特徵的觀察值作爲圖像強度。我用下面的函數來創建網絡基於像素的圖像分類的Tensorflow體系結構

def deep_learn(X,Y,X_test,Y_test): 

    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, 2, activation='softmax') 
    net = tflearn.regression(net, optimizer='adam', 
          loss='categorical_crossentropy', name="deep") 
    model = tflearn.DNN(net, tensorboard_verbose=2) 
    model.fit(X, Y, n_epoch=1, validation_set=0.1, show_metric=True, 
       snapshot_step=100) 
    # Save model when training is complete to a file 
    model.save("deep") 
    return model 

,但我得到了以下錯誤

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

我不知道問題出在哪裏。 使用深度神經網絡與隨機森林進行基於像素的分類有什麼好處嗎? 如果是的話,我該如何使用上述功能來做到這一點。

謝謝。

回答

0

您需要擴大變量X的尺寸,以考慮LSTM中的時間步長。而不是直接通過X,使用np.expand_dims像 -

X = np.expand_dims(X, axis=1) 
+0

這解決了我的問題,但我有另外一個問題。訓練模型後,p.array(model.predict(x_test))的結果僅爲1。在一個例子中,我有4類對象,我期望該命令的結果是2到5之間的標籤,但是預測函數的輸出又是1.這可能是訓練階段的問題嗎? – user2148425

+0

NN的輸出層是什麼?如果你贊成/接受這個答案並且在一個新問題中提出這個問題,那麼它是最好的,因爲它是不相關的。另外,給我一個鏈接到這裏的新問題 – martianwars

+0

這裏是鏈接http://stackoverflow.com/questions/41414305/wrong-output-of-prediction-function-in-tensorflow – user2148425