【问题标题】:Make a prediction using mxnet CNN model使用 mxnet CNN 模型进行预测
【发布时间】:2018-03-02 15:11:17
【问题描述】:

您好,我是数据科学的新手, 我遵循了本教程https://mxnet.incubator.apache.org/tutorials/nlp/cnn.html,但我对如何使用上述教程生成的训练模型进行单一预测感到困惑。请指导我正确的方向来解决这个问题。谢谢。

【问题讨论】:

    标签: python conv-neural-network data-science text-classification mxnet


    【解决方案1】:

    这里是如何使用预训练模型进行预测的教程:https://mxnet.incubator.apache.org/tutorials/python/predict_image.html

    步骤:
    1.加载预训练模型并创建MXNet模块实例。
    2. 抓取你的数据,用模块往前跑

    【讨论】:

    • 谢谢我用 .params 文件和模型训练后创建的 .json 文件加载了模型,但仍然无法创建模块实例。我该怎么做?
    • 您需要绑定从文件中读取的模型参数(mod.bind 和 mod.set_param),一旦您拥有一个正常运行的模型,您就可以调用 feed_forward/forward/predict 函数( mod.forward 和 mod.get_outputs)。
    • @Guy 和@kevinthesun,概念比较简单,但在实践中并不完全如此。例如,用于bind 方法的data_shapes 是什么?你们谁能举一个将这两个教程结合在一起的例子吗?
    【解决方案2】:

    可以这样加载模型:

    sym, arg_params, aux_params = mx.model.load_checkpoint('cnn', 3)
    mod = mx.mod.Module(symbol=sym, context=mx.cpu(), label_names=None)
    mod.bind(for_training=False, data_shapes=[('data', (50,56))], 
             label_shapes=mod._label_shapes)
    mod.set_params(arg_params, aux_params, allow_missing=True)
    

    但不幸的是,你不能用它来做一个预测。你需要一批 50 个。

    【讨论】:

    • 您不必有 50 个批次。data_shapes 中的第一个参数控制预期批次大小的大小。您可以简单地使用 1:mod.bind(for_training=False, data_shapes=[('data', (1,3,224,224))], label_shapes=mod._label_shapes),如教程中所述 github.com/dmlc/mxnet-notebooks/blob/master/python/tutorials/…
    • @Guy 我敦促您实际运行代码。我可以告诉你,你的解决方案行不通。问题是批量大小实际上嵌入在Reshape 层中。
    猜你喜欢
    • 1970-01-01
    • 2018-12-13
    • 2018-10-29
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    相关资源
    最近更新 更多