【问题标题】:Tensorflow architecture for pixel based image classification用于基于像素的图像分类的 TensorFlow 架构
【发布时间】:2017-05-14 19:56:30
【问题描述】:

我有一个包含 4 个波段的 RGBI 图像,并且希望能够使用 tensorflow 和深度学习将图像像素分为两类。 在训练数据中,每个像素被视为具有 4 个值/特征的观察值作为图像强度。我使用以下函数来创建网络

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: 无法为形状为“(?, 1, 4)”的张量“InputData/X:0”提供形状 (64, 4) 的值

我不知道问题出在哪里。 使用深度神经网络与随机森林进行基于像素的分类有什么好处吗? 如果是,我该如何使用上述功能来做到这一点。

谢谢。

【问题讨论】:

    标签: image tensorflow classification pixel tflearn


    【解决方案1】:

    您需要扩展变量 X 的维度,以考虑 LSTM 中的时间步长。不要直接传递X,而是使用np.expand_dims like -

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

    【讨论】:

    • 这解决了我的问题,但我还有另一个问题。训练模型后, p.array(model.predict(x_test)) 的结果仅为 1。在一个示例中,我有 4 类对象,我希望该命令的结果是 2 到 5 之间的标签,但预测函数的输出再次为 1。这可能是训练阶段的问题吗?
    • 你的神经网络的输出层是什么?最好是您赞成/接受这个答案并在一个新问题中提出这个问题,因为它是不相关的。另外,请在此处向我发送指向新问题的链接
    猜你喜欢
    • 2013-09-29
    • 2014-01-16
    • 2018-01-26
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2019-09-19
    • 2017-08-05
    相关资源
    最近更新 更多