使用pytorch针对自己的数据集进行模型训练,并迁移至android app中,错误问题的原因以及解决之道

如题,前几天,笔者尝试了将pytorch 深度学习模型迁移至android系统中,并写了一篇小结:《Android移动终端应用APP中实现图像分类功能-----以pytorch为例》。在该文中,下载了原作者提供的resnet18模型并迁移至android app中,成功运行。

至此,笔者甚为高兴,以为彻底解决了难题,可以随意迁移网络模型。孰料,将自己整理的图像数据集作为样本库进行迁移学习之后,迁移到android app中,直接一闪而过,还没来得及黑屏就退出了。真是一点情面都不给。在测试了很多次之后,笔者终于痛下决心要找到原因所在,解决这个问题。

但是android 程序调试,要么需要使用虚拟机,要么需要usb连接手机,进行真机调试。掂量具体情况之后,笔者决定连接手机真机进行调试。最终获得相关报错信息如下:

2020-07-10 18:59:24.662 12900-12900/org.pytorch.helloworld E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.pytorch.helloworld, PID: 12900
    java.lang.RuntimeException: Unable to start activity ComponentInfo{org.pytorch.helloworld/org.pytorch.helloworld.MainActivity}: com.facebook.jni.CppException: version_number <= kMaxSupportedFileFormatVersion INTERNAL ASSERT FAILED at../caffe2/serialize/inline_container.cc (init at ../caffe2/serialize/inline_container.cc:131)
    (no backtrace available)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8178)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
     Caused by: com.facebook.jni.CppException: version_number <= kMaxSupportedFileFormatVersion INTERNAL ASSERT FAILED at../caffe2/serialize/inline_container.cc (init at ../caffe2/serialize/inline_container.cc:131)
    (no backtrace available)
        at org.pytorch.Module$NativePeer.initHybrid(Native Method)
        at org.pytorch.Module$NativePeer.(Module.java:70)
        at org.pytorch.Module.(Module.java:25)
        at org.pytorch.Module.load(Module.java:21)
        at org.pytorch.helloworld.MainActivity.onCreate(MainActivity.java:100)
        at android.app.Activity.performCreate(Activity.java:8086)
        at android.app.Activity.performCreate(Activity.java:8074)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3755)
        	... 11 more

上述报错信息一大堆,其中有一句话很关键:

Caused by: com.facebook.jni.CppException: version_number <= kMaxSupportedFileFormatVersion INTERNAL ASSERT FAILED at../caffe2/serialize/inline_container.cc (init at ../caffe2/serialize/inline_container.cc:131)
    (no backtrace available)

经过查询,该原因应该是 app程序中build.grade 中有相关内容如下:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'org.pytorch:pytorch_android:1.3.0'
    implementation 'org.pytorch:pytorch_android_torchvision:1.3.0'
}

而我使用的pytorch版本为1.5,原因可能是在这里。具体该如何解决呢?需要对pytorch_android进行重新编译,才能解决这个问题。敬请关注后续文章。

-------------------- 正文到此结束------------------------

推荐一个公众号:健哥聊量化,会持续推出股票相关基础知识,以及python实现的一些基本的分析代码。欢迎大家关注,二维码如下:

相关文章列表如下:

  • 股票基础知识----- K线形态

  • 股票K线形态 ----早晨之星

  • “早晨之星”实际操作篇---通达信软件为例

  • 牛刀小试----python+tushare进行股票分析

  • 股票K线形态----黄昏之星

  • 股票K线形态-----墓碑线

  • 股票K线形态-----多方炮

  • 股票K线形态-----红三兵

  • 股票K线形态----三只乌鸦

  • 股票K线形态-----锤头线、吊颈线、倒锤头线

你可能感兴趣的:(android,pytorch,python,android,深度学习,迁移学习)