【问题标题】:how to do image classification with MXNet?如何使用 MXNet 进行图像分类?
【发布时间】:2018-03-01 03:28:16
【问题描述】:

我刚刚开始使用 MXNet,并且根据一些教程,我已经使用 MNIST 编写并训练了一个 CNN。现在我想实际发送一张图片到这个 CNN 并从中得到结果,我应该怎么做?

这是我的代码:

def get_lenet():
    data = mx.symbol.Variable('data')
    # first conv
    conv1 = mx.symbol.Convolution(data=data, kernel=(5,5), num_filter=20)
    tanh1 = mx.symbol.Activation(data=conv1, act_type="tanh")
    pool1 = mx.symbol.Pooling(data=tanh1, pool_type="max",
                          kernel=(2,2), stride=(2,2))
    # second conv
    conv2 = mx.symbol.Convolution(data=pool1, kernel=(4,4), num_filter=50)
    tanh2 = mx.symbol.Activation(data=conv2, act_type="tanh")
    pool2 = mx.symbol.Pooling(data=tanh2, pool_type="max",
                          kernel=(2,2), stride=(2,2))

    # first fullc
    flatten = mx.symbol.Flatten(data=pool2)
    fc1 = mx.symbol.FullyConnected(data=flatten, num_hidden=500)
    tanh4 = mx.symbol.Activation(data=fc1, act_type="tanh")

    # second fullc
    fc2 = mx.symbol.FullyConnected(data=tanh4, num_hidden=10)
    # loss
    lenet = mx.symbol.SoftmaxOutput(data=fc2, name='softmax')
    return lenet

logging.getLogger().setLevel(logging.DEBUG)

model = mx.model.FeedForward(
    ctx=mx.cpu(),
    symbol=get_lenet(),
    num_epoch=5,
    learning_rate=0.1
)

model.fit(
    X=train_iter,
    eval_data=val_iter,
    batch_end_callback=mx.callback.Speedometer(batch_size, 200)
)

提前感谢您的帮助

【问题讨论】:

    标签: python mxnet


    【解决方案1】:

    您正在使用 MXNet 的模型 API,该 API 已被 Module API 弃用。但是,在您的具体示例中,您可以使用以下代码运行推理:preds = model.predict(infer_iter) 其中infer_iter 是推理图像的DataIter。如果您只想输入单个图像,您可以创建一个 NDArrayIter 并将 data 字段设置为包含该图像的 numpy 数组:

    # Replace this line with real test data
    test_data = np.random.uniform(size=(1, 1, 28, 28))
    # Create data iterator
    test_iter = mx.io.NDArrayIter(test_data)
    # Perform inference
    prediction = model.predict(test_iter)
    print("prediction: ", np.argmax(prediction, axis=1))
    

    我还建议您查看Gluon API,它更容易理解和调试。这是 Gluon 中的 tutorial on convolutional networks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 2017-06-10
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2017-12-22
      • 2012-06-29
      相关资源
      最近更新 更多