【问题标题】:Wrong output of prediction function in tensorflow张量流中预测函数的错误输出
【发布时间】:2017-05-15 19:42:43
【问题描述】:

我将对图像执行基于像素的分类。这是我用来训练神经网络的代码

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。这可能是训练阶段的问题吗?

【问题讨论】:

  • 你肯定需要增加n_epoch。我没用过tf_learn这个包,但是当你的问题是分类的时候你怎么用regression呢?
  • 我是新手,只是想进行一些测试,只是从github.com/tflearn/tflearn/blob/master/examples/images/…的TFlearn网页复制了这段代码
  • 尝试将n_epoch 增加到 5 或 10,看看是否有帮助?您是否始终在所有测试数据中获得1
  • 是的,输出为 1,似乎训练和预测都不正确。
  • 你复制的Github代码是不是和input_data有区别?

标签: python tensorflow classification pixel tflearn


【解决方案1】:

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,请相应地调整这些参数。

【讨论】:

  • 不确定。我按照这里的例子 github.com/tflearn/tflearn/blob/master/tutorials/intro/… 。就我而言,我需要将 6 更改为 4,因为每个像素有 4 个特征。但是,尽管我预计 1 和 2,但预测结果始终为 1。1 标签对应于绿色像素,2 对应于棕色像素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2019-07-20
  • 1970-01-01
  • 2018-10-31
  • 2017-11-22
相关资源
最近更新 更多