千里马framework学习跨进程实战课程学员疑问解答:ClassNotFoundException when unmarshalling

错误处理Class not found when unmarshalling: android.support.v4.app.FragmentManagerState 解决方法拉到文末. 报错日志: E/Parcel: Class not found when unmarshalling: android.support.v4.app.FragmentManagerState java.lang.ClassNotFoundException: android.support.v4.app.FragmentManagerState at j... 阅读详情

hi,粉丝朋友们!
今天来分享一个学员朋友在学习跨进程实战课程时候,遇到的一个问题:
在学习使用跨进程传递的Messenger进行数据传递,这时候学员想要使用Messenger来传递一个对象,当然这个对象得是Parcelable的,具体代码如下:

发送端:

    void sendMessageToServer() throws RemoteException {
        Message toServer = Message.obtain();
        toServer.replyTo = messengerClientSend;
        toServer.what = 1;
        Bundle bundle = new Bundle();
        bundle.putString("bundleKey","bundleValue Client");
        StudentInfo info = new StudentInfo();
        info.id = "2";
        bundle.putParcelable("data",info);//给bundle装载一个StudentInfo的Parcelable对象
        toServer.setData(bundle);
        messengerServer.send(toServer);
    }

接受端:

Handler messengerHandler = new Handler() {
        @Override
        public void handleMessage(@NonNull Message msg) {
            switch (msg.what) {
                case  1:
                   StudentInfo info = new StudentInfo();//故意new StudentInfo看看是否有这个类
                    info.id = "3";
                    //这里想远端获取一下Parcelable即StudentInfo
                    Log.i("test","MessengerService Messenger handleMessage msg = " + msg + " bundle  key value = " + msg.getData().getString("bundleKey") + " data " + (StudentInfo)(msg.getData().getParcelable("data")));
                    Messenger clientSend = msg.replyTo;
                    Message toClientMsg = Message.obtain();
                    toClientMsg.what = 2;
                   // toClientMsg.obj = "I am replay from Server";
                    try {
                        clientSend.send(toClientMsg);
                    }catch (Exception e) {
                        Log.i("test","MessengerService clientSend  error ",e);
                    }
                    break;
            }
            super.handleMessage(msg);
        }
    };

但是很不幸报错了如下:

ClassNotFoundException when unmarshalling: com.example.servicedemo.StudentInfo

2023-03-09 09:52:37.496 11398-11398/com.example.servicedemo E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.servicedemo:messenger, PID: 11398
    android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.servicedemo.StudentInfo
        at android.os.Parcel.readParcelableCreatorInternal(Parcel.java:4950)
        at android.os.Parcel.readParcelableInternal(Parcel.java:4807)
        at android.os.Parcel.readValue(Parcel.java:4567)
        at android.os.Parcel.readValue(Parcel.java:4347)
        at android.os.Parcel.-$$Nest$mreadValue(Unknown Source:0)
        at android.os.Parcel$LazyValue.apply(Parcel.java:4445)
        at android.os.Parcel$LazyValue.apply(Parcel.java:4404)
        at android.os.BaseBundle.getValueAt(BaseBundle.java:394)
        at android.os.BaseBundle.getValue(BaseBundle.java:374)
        at android.os.BaseBundle.getValue(BaseBundle.java:357)
        at android.os.BaseBundle.getValue(BaseBundle.java:350)
        at android.os.Bundle.getParcelable(Bundle.java:913)
        at com.example.servicedemo.MessengerService$1.handleMessage(MessengerService.java:30)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7872)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
     Caused by: java.lang.ClassNotFoundException: com.example.servicedemo.StudentInfo
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:454)
        at android.os.Parcel.readParcelableCreatorInternal(Parcel.java:4916)
        at android.os.Parcel.readParcelableInternal(Parcel.java:4807) 
        at android.os.Parcel.readValue(Parcel.java:4567) 
        at android.os.Parcel.readValue(Parcel.java:4347) 
        at android.os.Parcel.-$$Nest$mreadValue(Unknown Source:0) 
        at android.os.Parcel$LazyValue.apply(Parcel.java:4445) 
        at android.os.Parcel$LazyValue.apply(Parcel.java:4404) 
        at android.os.BaseBundle.getValueAt(BaseBundle.java:394) 
        at android.os.BaseBundle.getValue(BaseBundle.java:374) 
        at android.os.BaseBundle.getValue(BaseBundle.java:357) 
        at android.os.BaseBundle.getValue(BaseBundle.java:350) 
        at android.os.Bundle.getParcelable(Bundle.java:913) 
        at com.example.servicedemo.MessengerService$1.handleMessage(MessengerService.java:30) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loopOnce(Looper.java:201) 
        at android.os.Looper.loop(Looper.java:288) 
        at android.app.ActivityThread.main(ActivityThread.java:7872) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 
     Caused by: java.lang.ClassNotFoundException: com.example.servicedemo.StudentInfo
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:1366)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:1426)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at java.lang.Class.classForName(Native Method) 
        at java.lang.Class.forName(Class.java:454) 
        at android.os.Parcel.readParcelableCreatorInternal(Parcel.java:4916) 
        at android.os.Parcel.readParcelableInternal(Parcel.java:4807) 
        at android.os.Parcel.readValue(Parcel.java:4567) 
        at android.os.Parcel.readValue(Parcel.java:4347) 
        at android.os.Parcel.-$$Nest$mreadValue(Unknown Source:0) 
        at android.os.Parcel$LazyValue.apply(Parcel.java:4445) 
        at android.os.Parcel$LazyValue.apply(Parcel.java:4404) 
        at android.os.BaseBundle.getValueAt(BaseBundle.java:394) 
        at android.os.BaseBundle.getValue(BaseBundle.java:374) 
        at android.os.BaseBundle.getValue(BaseBundle.java:357) 
        at android.os.BaseBundle.getValue(BaseBundle.java:350) 
        at android.os.Bundle.getParcelable(Bundle.java:913) 
        at com.example.servicedemo.MessengerService$1.handleMessage(MessengerService.java:30) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loopOnce(Looper.java:201) 
        at android.os.Looper.loop(Looper.java:288) 
        at android.app.ActivityThread.main(ActivityThread.java:7872) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

报错根本原因是这个ClassNotFoundException,即找不到com.example.servicedemo.StudentInfo,这个是为啥?明明我们apk自己都可以用它而且编译也不会出错,到底是为啥阿?

其实来看一下堆栈
at android.os.Parcel.readParcelableCreatorInternal(Parcel.java:4916)
at android.os.Parcel.readParcelableInternal(Parcel.java:4807)
at android.os.Parcel.readValue(Parcel.java:4567)
at android.os.Parcel.readValue(Parcel.java:4347)
at android.os.Parcel.-$NestNestNestmreadValue(Unknown Source:0)
at android.os.ParcelLazyValue.apply(Parcel.java:4445)atandroid.os.ParcelLazyValue.apply(Parcel.java:4445) at android.os.ParcelLazyValue.apply(Parcel.java:4445)atandroid.os.ParcelLazyValue.apply(Parcel.java:4404)
at android.os.BaseBundle.getValueAt(BaseBundle.java:394)
at android.os.BaseBundle.getValue(BaseBundle.java:374)
at android.os.BaseBundle.getValue(BaseBundle.java:357)
at android.os.BaseBundle.getValue(BaseBundle.java:350)
at android.os.Bundle.getParcelable(Bundle.java:913)
看一下对应的代码:

 @Nullable
    private <T> Parcelable.Creator<T> readParcelableCreatorInternal(
            @Nullable ClassLoader loader, @Nullable Class<T> clazz) {
        String name = readString();
      //省略部分
        try {
            // If loader == null, explicitly emulate Class.forName(String) "caller
            // classloader" behavior.
            ClassLoader parcelableClassLoader =
                    (loader == null ? getClass().getClassLoader() : loader);
            // Avoid initializing the Parcelable class until we know it implements
            // Parcelable and has the necessary CREATOR field. http://b/1171613.
            Class<?> parcelableClass = Class.forName(name, false /* initialize */,
                    parcelableClassLoader);
    		//省略部分
        } catch (IllegalAccessException e) {
         
        } catch (ClassNotFoundException e) {
            Log.e(TAG, "Class not found when unmarshalling: " + name, e);
            throw new BadParcelableException(
                    "ClassNotFoundException when unmarshalling: " + name, e);
        } catch (NoSuchFieldException e) {
           
        }
    		//省略部分
        return (Parcelable.Creator<T>) creator;
    }

可以看出这里其实是在Class.forName时候没有加载到对应的StudentInfo,但是因为这里如果默认我们没有传递对应的parcelableClassLoader,就会导致它就不是我们apk的classloader,所以加在不到我们app的class,因为系统类是BootClassLoader,只能加在系统预制那些class,从而导致出错找不到。

解决办法当然就是在解析获取parcelable对象前要设置对应的ClassLoader

  Bundle data = msg.getData();
                    StudentInfo info = new StudentInfo();
                    info.id = "3";
                    data.setClassLoader(getClassLoader());//把当前apk的classloader设置进去
                    Log.i("test","MessengerService Messenger handleMessage msg = " + msg + " bundle  key value = " + msg.getData().getString("bundleKey") + " data " + (StudentInfo)(msg.getData().getParcelable("data")));

这样在parcel解析时候就可以正常了

  ClassLoader parcelableClassLoader =
                    (loader == null ? getClass().getClassLoader() : loader);

这里的loader已经不为null,所以使用是apk的PathClassLoader

扩展

1、请问为跨进程写在aidl里面的StudentInfo对象就不需要,额外设置这个clasloader
aidl文件实际转化成了java文件,所以跨进程回调是直接调用到了aidl对应的java文件,所以这个时候对应的classloader肯定就变成了PathClassLoader,因为这类的Messenger跨进程通讯的aidl属于framework公共,所以对应的classloader就是对应的BootClassLoader,不会是这个PathClassLoader

ClassNotFoundException when unmarshalling: androidx.fragment.app.FragmentManagerState 问题分析 疑难问题:android.os.BadParcelableException ClassNotFoundException when unmarshalling: androidx.fragment.app.FragmentManagerState 问题分析 问题描述 -----------------------Crash 1 Message----------------------- 完整log: logcat.txt 02-20 21:08:32.727 E/AndroidRuntime(32306 阅读详情

相关推荐

PICO4 VR开发调试神器:用Live Preview Plugin实现电脑串流,告别反复打包烧录的繁琐流程

本文详细介绍了PICO4 VR开发中如何使用Live Preview Plugin实现电脑串流,显著提升开发效率。通过实时预览和调试功能,开发者可以避免反复打包烧录的繁琐流程,特别适用于Unity环境下的VR应用开发。文章涵盖环境配置、连接设置、实时调试技巧及性能优化方案,是PICO4开发者的必备指南。

weixin_34110970的博客 418

ClassNotFoundException when unmarshalling 问题总结

一、现象: 应用打开,home键到后台,过一段时间打开,偶现fc,log如下: 123E/AndroidRuntime(9085): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: *.*.*.*.Layout$ConfigE/AndroidRuntime(

Delion 1万+

海康VisionMaster图形定位实战:十字形Mark点精准匹配技巧

本文深入解析了海康VisionMaster图形定位模块在工业自动化中实现十字形Mark点精准匹配的实战技巧。文章从ROI设置、核心参数调优(如定位方式、尺度模式、对比度阈值)到工业场景应用与避坑指南,系统性地分享了提升匹配成功率和稳定性的关键步骤,帮助工程师应对复杂现场环境,实现高效、可靠的视觉定位。

weixin_29285605的博客 260

ClassNotFoundException when unmarshalling Crash

我们看过Bundle代码之后,就会发现无论读写Bundle对象的内容,都会先调用unparcel这个方法,它的作用就是反序列化的核心,将二进制格式的数据转换成内存中的Java对象,所以这个过程中必然是要进行类加载创建对象的,也就是在这个过程中出现ClassNotFoundException。我们在上文其实讲过Bundle的unparcel作用了,反序列化过程会按照存储对象的类型分别进行,这个过程在Parcel.readValue方法中, 其中解析Bundle类型对象会调用到readBundle方法。

meishuang2306的博客 1622

SA8155P QCOM 车载系统介绍

高通车载相机开发

qq_37057338的博客 5229

从 SAP HANA 到 ABAP Cloud:彻底讲透 scalar function 的定位、实现方式与 Clean Core 实践

SAP项目中,scalar function是数据库层的重要计算单元,用于封装可复用的单值逻辑。不同于返回结果集的table function,它直接嵌入SQL表达式,适用于折扣率计算、数据标准化等场景。在SAP技术栈中,scalar function有三种形态:原生SQLScript函数、AMDP托管函数和CDS绑定函数。正确使用可提升查询性能,但需注意与procedure、table function的边界区分。AMDP scalar function是ABAP项目中的推荐实现方式,能确保函数生命周期受

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1674

Parcel: Class not found when unmarshalling: 自定义类

问题描述 如标题,这个问题网上有很人遇到,场景是跨进程启动activity或service通传Intent传Parcel数据时遇到,网上总结是类加载器设置不对的原因。我遇到的问题场景是在本进程中,启动新的activity解析传过来的Parcel子类时出现的异常,异常backtrace如下: Caused by: android.os.BadParcelableException: ClassNo...

技术的学习与积累是个技术活 7307

开发具有情感分析能力的AI Agent

本文将深入探讨开发具有情感分析能力的AI Agent的各个方面。我们将首先介绍情感分析的基础知识,包括定义、背景和应用领域。接着,我们将详细讲解情感分析的核心概念、数据处理方法和算法原理。随后,文章将展示如何设计情感分析系统架构,并进行项目实战,包括环境安装、源代码实现和案例分析。最后,我们将总结最佳实践和注意事项,为读者提供进一步学习的资源。情感分析(Sentiment Analysis),也称为意见挖掘,是自然语言处理(NLP)的一个分支。

SuperAGI2025 1146

探索ClassLoader,解决 android.os.BadParcelableException: ClassNotFoundException when unmarshalling

本文基于本人在项目开发中遇到的实际问题,对ClassNotFoundException异常发生的原因和解决办法做了探究。 定位异常 首先看看出问题的代码。 Application 1 的部分代码: ... private MediaSessionCompat mMediaSession = new MediaSessionCompat(this, TAG); ... private voi...

勤奋的果子的博客 4306

【部署】OpenClaw版本降级实操(含全量卸载)

本文详细介绍了OpenClaw工具的降级与卸载方法。主要内容包括:1)通过npm安装指定版本的核心命令及国内镜像加速方案;2)两种卸载路径:CLI工具存在时的简易一键卸载(含交互式与非交互式命令)和手动分步卸载流程;3)CLI已删除但服务仍在运行时,针对macOS(launchd)、Linux(systemd)和Windows(计划任务)系统的具体清理步骤。文章特别强调了卸载前备份的重要性,并提供了不同安装方式(常规安装与源码克隆)的额外说明,确保用户能彻底清理所有组件。

海兰 3173

使用mid360运行lio-livox对比fast-lio2

msg_type为激光雷达发出的数据格式,有livox自定义数据类型格式CustomMsg和ros标准的PointCloud2格式,因此首先需要确定激光雷达端配置的是哪种格式。可以从激光雷达的ros驱动中看到驱动端有三种格式可以选,驱动端的数字2对应lio-livox中的1,驱动端的0对应lio-livox的格式0。如果使用的是Ubuntu18.04编译完成后运行直接成功,如果使用20.04运行会报错,需要修改以下源代码。针对livox-mid360 运行lio-livox的一些问题。

z1872385的博客 1230

Class not found when unmarshalling:

问题描述:这个问题主要出在某些版本的手机上面使用了Intent直接传递Parcelable数据,且Parcelable类型是使用默认方式生成的。修改方式有多种,这里使用比较方便的一种,另外一种方式是在使用Intent传递数据时候添加加载器除此之外还可以转换成字节数组传递,该方式出现在中。

Mr_Tony的专栏 2168

手把手入门YOLO到改进优化教程 | 【P5进阶篇】YOLOv8损失函数改进实战-损失函数IoU之KLD Loss

在本节,将从 KLD Loss(Kullback–Leibler Divergence Loss)的理论到实战代码实现,带你把 KLD Loss融合进 YOLOv8 的训练框架中。并通过训练日志与实验结果,验证 KLD Loss 在实际工程中的优势。

嵌入式阿齐Archie 2万+

关于 E/Parcel: Class not found when unmarshalling:和ClassNotFoundException

关于在使用Parcelable时出现这个报错的研究: 这个报错的原理可以查看 https://blog.youkuaiyun.com/SCHOLAR_II/article/details/104329011 这位博主写的很清楚,这类问题都是ClassLoader的问题 但是很有趣的是,在某些情况下,我们的Parcelable实现类没有复杂的数据结构,只是一些int,boolean的时候,在一些机型上也会出现这个问题(笔者是发生在三星s7上)。 这个问题原因暂时不是很了解,但是提供一下目前的解决办法: 原来传递的时候是

Mr.L bicker的博客 1985

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

安卓Parcelable反序列化报错,Parcelable ClassNotFoundException when unmarshalling

Bundle中默认的ClassLoader 是继承BaseBundle 中的 BootClassLoader 这个加载器。看到结果是PathClassLoader,这个ClassLoader是加载APK应用的,所以能找到我们写的类,这很显然~如果自己debug进去看 Parcel.java中2789行,readParcelableCreator()方法。从我这里的现象却不是这样的,因为没涉及系统内存不足的情况,所以我觉得应该不是这个原因。这个加载器只加载 系统里面或者SDK的类,当然不会有我们自己写类。

w123456wwqq的博客 1439

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Class not found when unmarshalling

在序列化字段中有集合或者其他特殊字段时,如下 List就会出现该问题 private String borrow_mortgage; private String borrow_use; private String risk_control; private String borrow_business_basic; private String funds1; private St

s_nshine的博客 1945

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android.os.BadParcelableException: ClassNotFoundException when unmarshalling

转自:http://www.trinea.cn/android/android-os-badparcelableexception-classnotfoundexception-unmarshalling/ 本文主要分析android.os.BadParcelableException: ClassNotFoundException when unmarshalling这个异常的原因及解决方

Qiqihar的专栏 2163

Android Parcelable 错误 Parcel: Class not found when unmarshalling

在使用 Parcelable在activity之间传递对象的时候有些系统会报 Parcel: Class not found when unmarshalling错误 并且提示 “xx.xxxxx.xxx” ClassNoFound 具体原因尚未调查 解决方案: 1. Intent intent= new Intent(this,XXXActivity.class); Bundle bu...

xfnbing的专栏 4873

E/Parcel: Class not found when unmarshalling

E/Parcel: Class not found when unmarshalling E/Parcel: Class not found when unmarshalling: xxx.ItemDataBean java.lang.ClassNotFoundException: xxx.ItemDataBean 原因分析 Android有两种不同的classloade...

feather(猎羽) 5016

Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:

最近用ContentProvider实现跨进程传递数据的时候报了这个异常,通过参考https://blog.youkuaiyun.com/Bettarwang/article/details/45315091这篇博客成功解决了问题 只需要在获取数据之前加上setClassLoader()这个方法就可以了 ...

qq_29087343的博客 1991

Parcel: Class not found when unmarshalling, System.gc();

页面结束时, System.gc();如果有页面间传值,实现Parcelable 的javabean,会报错。 Parcel: Class not found when unmarshalling。 参考文章:ClassNotFoundException when unmarshalling 问题总结 E/Parcel: Class not found when unmarshalling...

fendouwangzi的专栏 555

Class not found when unmarshalling: com.xx.xx.bean.ImagesSet

Parcelize注解,结果一直报错提示找不到类,最后查找资料得知是因为classloader的问题,需要在intent.put之前指定自定义类的加载器。根据服务器返回数据生成数据类之后,在两个Activity之间传递所以又加上了。

lyhyrc的博客 393
上一篇: 众筹项目更新点
下一篇: android 13 Zygote fork新的app进程源码分析-车载车机手机framework实战开发
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值