我有一个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
但是我有以下错误
value error:无法为tensor'inputdata/x:0'的形状的进料值(64,4),它具有形状'(?,1,4)'
我不知道问题在哪里。使用深层神经网络与随机森林进行基于像素的分类有任何好处吗?如果是,我该如何使用上述功能进行操作。
谢谢。
您需要扩展变量X
的尺寸,以说明LSTM中的时间步长。而不是直接通过X
,而是使用np.expand_dims
喜欢 -
X = np.expand_dims(X, axis=1)