用于基于像素的图像分类的 Tensorflow 架构
Tensorflow architecture for pixel based image classification
我有一个包含 4 个波段的 RGBI 图像,我希望能够使用张量流和深度学习将图像像素分为两个 类。
在训练数据中,每个像素被认为是一个以 4 values/features 作为图像强度的观测值。我使用以下函数创建网络
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)'
不知道问题出在哪里。
使用深度神经网络与随机森林进行基于像素的分类有什么好处吗?
如果是,我该如何使用上述功能来做到这一点。
谢谢。
您需要扩展变量 X
的维度,以考虑 LSTM 中的时间步长。不要直接传递 X
,而是像 -
那样使用 np.expand_dims
X = np.expand_dims(X, axis=1)
我有一个包含 4 个波段的 RGBI 图像,我希望能够使用张量流和深度学习将图像像素分为两个 类。 在训练数据中,每个像素被认为是一个以 4 values/features 作为图像强度的观测值。我使用以下函数创建网络
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)'
不知道问题出在哪里。 使用深度神经网络与随机森林进行基于像素的分类有什么好处吗? 如果是,我该如何使用上述功能来做到这一点。
谢谢。
您需要扩展变量 X
的维度,以考虑 LSTM 中的时间步长。不要直接传递 X
,而是像 -
np.expand_dims
X = np.expand_dims(X, axis=1)