ppocr 源码阅读:ppocr.modeling.architecures 之build_model模块
在train.py第33行中有build_model模块,该模块用来构建模型,是比较关键的模块。
from ppocr.modeling.architectures import build_model
import copy
import importlibfrom .base_model import BaseModel
from .distillation_model import DistillationModel__all__ = ['build_model']def build_model(config):config = copy.deepcopy(config)
/*“浅拷贝,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会响拷贝对象。深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。”*/if not "name" in config:arch = BaseModel(config)else:name = config.pop("name")mod = importlib.import_module(__name__)arch = getattr(mod, name)(config)return arch
首先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的复制还是值的复制的区别。
浅拷贝,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;
改变原始对象中为不可变类型的元素的值,不会响拷贝对象。
深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。
(其实这里1、2也是指向同一个对象,但作为不可变对象来说,它们互不影响,直观上的感受就相当于是复制了一份,故简化如图上所示)
这种复制方法叫做浅拷贝(shallow copy),又被人形象地称作“新瓶装旧酒”,虽然产生了新对象,但里面的内容还是来自同一份。
如果要彻底地产生一个和原对象完全独立的复制品,得使用深拷贝(deep copy):
ppocr 源码阅读:ppocr.modeling.architecures 之build_model模块相关推荐
- Nginx模块开发:模块结构的源码阅读以及过滤器(Filter)模块的实现
Nginx模块开发:模块结构的源码阅读以及过滤器(Filter)模块的实现 一.Nignx中的模块是什么? 二.模块的基本结构 `ngx_module_s` `ngx_command_s` `ngx_ ...
- [源码阅读]——Sylar服务器框架:配置模块
配置模块 配置模块概述 配置模块相关类 YAML配置文件 类型转换的偏特化 配置模块与日志模块的整合 还需进一步理解问题 配置模块概述 在sylar的配置模块设计中,采用约定优于配置的思想,其常规 ...
- 【NLP】NLP实战篇之bert源码阅读(run_classifier)
本文主要会阅读bert源码 (https://github.com/google-research/bert )中run_classifier.py文件,已完成modeling.py.optimiza ...
- sfm三维重建源码_OpenMVG源码阅读小记
"读一份好源码,就是和许多智慧的人谈话". 本文记录了笔者学习 openMVG 开源软件的一些初步经验和心得.如果你对计算机视觉和摄影测量有兴趣,需要用到相关技术,这篇文章正好就是 ...
- 应用监控CAT之cat-client源码阅读(一)
CAT 由大众点评开发的,基于 Java 的实时应用监控平台,包括实时应用监控,业务监控.对于及时发现线上问题非常有用.(不知道大家有没有在用) 应用自然是最初级的,用完之后,还想了解下其背后的原理, ...
- centos下将vim配置为强大的源码阅读器
每日杂事缠身,让自己在不断得烦扰之后终于有了自己的清静时光来熟悉一下我的工具,每次熟悉源码都需要先在windows端改好,拖到linux端,再编译.出现问题,还得重新回到windows端,这个过程太耗 ...
- 源码阅读:AFNetworking(十六)——UIWebView+AFNetworking
该文章阅读的AFNetworking的版本为3.2.0. 这个分类提供了对请求周期进行控制的方法,包括进度监控.成功和失败的回调. 1.接口文件 1.1.属性 /**网络会话管理者对象*/ @prop ...
- 源码阅读:SDWebImage(六)——SDWebImageCoderHelper
该文章阅读的SDWebImage的版本为4.3.3. 这个类提供了四个方法,这四个方法可分为两类,一类是动图处理,一类是图像方向处理. 1.私有函数 先来看一下这个类里的两个函数 /**这个函数是计算 ...
- mybatis源码阅读
说下mybatis执行一个sql语句的流程 执行语句,事务等SqlSession都交给了excutor,excutor又委托给statementHandler SimpleExecutor:每执行一次 ...
- 24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment
24 UsageEnvironment使用环境抽象基类--Live555源码阅读(三)UsageEnvironment 24 UsageEnvironment使用环境抽象基类--Live555源码阅读 ...
最新文章
- 用计算机问你叫什么名字,计算器女友与男子谈情说爱 一分钟发出各种甜言蜜语...
- 由隐藏层节点数引起的网络准确率的不规则变化02
- edem颗粒替换_EDEM后处理问题的大汇总,方便易懂!
- java.lang.UnsupportedClassVersionError解决方案
- 调用webservice或wcf时,提示:无法加载协定为的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
- 数字图像处理基本运算
- shell 脚本 生成文件,文件名为日期时间
- mysql 4字节utf8_MySQL 4字节utf8字符更新失败一例
- 记录执行hivesql时报org.apache.hadoop.hdfs.BlockMissingException:Could not obtain block错误
- Winform模态窗体关闭时赋值给打开自身的窗体(C# 事件委托版)
- 使用剪切板[3]: SetComponent、GetComponent
- 51单片机初学3-从零开始制作一款电子时钟
- 案例 | 省去繁琐简历筛选,「微伴助手」选择 ShowMeBug 在线笔试提高人才精准度
- BFS算法解题套路框架(附习题)
- SQL SERVER数据库三种数据插入方式
- 微信H5支付浏览器支付
- 银行账户管理程序(二)
- oracle序列高速缓存,行高速缓存上的等待事件
- Android 内置第三方app
- Family Show 3.0分析(一)项目文件结构分析