「Python源码剖析」对象模型有哪些特色?本文详解

【Python源码剖析】对象模型概述 Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。 与其他面向对象编程语言相比, Python 有自己独特的一面。 这让很多开发人员在学习 Python 时,多少有些无所适从。 那么,Python 对象模型都有哪些特色呢? 一切皆对象 首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。 换句话讲, Python 不再区别对待基本类型和对象,所有基本类型内部均由对象实现。 一个整数是一个对象,一个字符串也是一个对象: >>&gt 阅读详情

 

Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。

与其他面向对象编程语言相比, Python 有自己独特的一面。 这让很多开发人员在学习 Python 时,多少有些无所适从。 那么,Python 对象模型都有哪些特色呢?

一切皆对象

首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。 换句话讲, Python 不再区别对待基本类型和对象,所有基本类型内部均由对象实现。 一个整数是一个对象,一个字符串也是一个对象:

>>> a = 1
>>> b = 'abc'

其次, Python 中的 类型也是一种对象 ,称为 类型对象 。 整数类型是一个对象,字符串类型是一个对象,程序中通过 class 关键字定义的类也是一个对象。

 

举个例子,整数类型在 Python 内部是一个对象,称为 类型对象 :

>>> int
<class 'int'>

通过整数类型 实例化 可以得到一个整数对象,称为 实例对象 :

>>> int('1024')
1024

面向对象理论中的“ 类 ”和“ 对象 ”这两个基本概念,在 Python 内部都是通过对象实现的,这是 Python 最大的特点。

 

类型、对象体系

a 是一个整数对象( 实例对象 ),其类型是整数类型( 类型对象 ):

>>> a = 1
>>> type(a)
<class 'int'>
>>> isinstance(a, int)
True

那么整数类型的类型又是什么呢?

>>> type(int)
<class 'type'>

可以看到,整数类型的类型还是一种类型,即 类型的类型 。 只是这个类型比较特殊,它的实例对象还是类型对象。

Python 中还有一个特殊类型 object ,所有其他类型均继承于 object ,换句话讲 object 是所有类型的基类:

>>> issubclass(int, object)
True

综合以上关系,得到以下关系图:

 

内置类型已经搞清楚了,自定义类型及对象关系又如何呢?定义一个简单的类来实验:

class Dog(object):

    def yelp(self):
        print('woof')

创建一个 Dog 实例,毫无疑问,其类型是 Dog :

>>> dog = Dog()
>>> dog.yelp()
woof
>>> type(dog)
<class '__main__.Dog'>

Dog 类的类型自然也是 type ,其基类是 object (就算不显式继承也是如此):

>>> type(Dog)
<class 'type'>
>>> issubclass(Dog, object)
True

 

自定义子类及实例对象在图中又处于什么位置?定义一个猎犬类进行实验:

class Sleuth(Dog):

    def hunt(self):
        pass

可以看到, 猎犬对象( sleuth )是猎犬类( Sleuth )的实例, Sleuth 的类型同样是 type :

>>> sleuth = Sleuth()
>>> sleuth.hunt()
>>> type(sleuth)
<class '__main__.Sleuth'>
>>> type(Sleuth)
<class 'type'>

同时, Sleuth 类继承自 Dog 类,是 Dog 的子类,当然也是 object 的子类:

>>> issubclass(Sleuth, Dog)
True
>>> issubclass(Sleuth, object)
True

 

现在不可避免需要讨论 type 以及 object 这两个特殊的类型。

理论上, object 是所有类型的 基类 ,本质上是一种类型,因此其类型必然是 type 。 而 type 是所有类型的类型,本质上也是一种类型,因此其类型必须是它自己!

>>> type(object)
<class 'type'>
>>> type(object) is type
True

>>> type(type)
<class 'type'>
>>> type(type) is type
True

另外,由于 object 是所有类型的 基类 ,理论上也是 type 的基类( __base__ 属性):

>>> issubclass(type, object)
True
>>> type.__base__
<class 'object'>

但是 object 自身便不能有基类了。为什么呢? 对于存在继承关系的类,成员属性和成员方法查找需要回溯继承链,不断查找基类。 因此,继承链必须有一个终点,不然就死循环了。

 

这就完整了!

可以看到,所有类型的基类收敛于 object ,所有类型的类型都是 type ,包括它自己! 这就是 Python 类型、对象体系全图,设计简洁、优雅、严谨。

该图将成为后续阅读源码、探索 Python 对象模型的有力工具,像地图一样指明方向。 图中所有实体在 Python 内部均以对象形式存在,至于对象到底长啥样,相互关系如何描述,这些问题先按下不表,后续一起到源码中探寻答案。

变量只是名字

先看一个例子,定义一个变量 a ,并通过 id 内建函数取出其“地址”:

>>> a = 1
>>> id(a)
4302704784

定义另一个变量 b ,以 a 赋值,并取出 b 的“地址”:

>>> b = a
>>> id(b)
4302704784

惊奇地看到, a 和 b 这两个变量的地址居然是相同的!这不合常理呀!

对于大多数语言( C 语言为例),定义变量 a 即为其分配内存并存储变量值:

 

变量 b 内存空间与 a 独立,赋值时进行拷贝:

 

在 Python 中,一切皆对象,整数也是如此, 变量只是一个与对象关联的名字 :

 

而变量赋值,只是将当前对象与另一个名字进行关联,背后的对象是同一个:

 

因此,在 Python 内部,变量只是一个名字,保存指向实际对象的指针,进而与其绑定。 变量赋值只拷贝指针,并不拷贝指针背后的对象。

可变对象 与 不可变对象

定义一个整数变量:

>>> a = 1
>>> id(a)
4302704784

然后,对其自增 1 :

>>> a += 1
>>> a
2
>>> id(a)
4302704816

数值符合预期,但是对象变了!初学者一脸懵逼,这是什么鬼?

一切要从 可变对象 和 不可变对象 说起。 可变对象 在对象创建后,其值可以进行修改; 而 不可变对象 在对象创建后的整个生命周期,其值都不可修改。

在 Python 中,整数类型是不可变类型, 整数对象是不可变对象。 修改整数对象时, Python 将以新数值创建一个新对象,变量名与新对象进行绑定; 旧对象如无其他引用,将被释放。

 

每次修改整数对象都要创建新对象、回收旧对象,效率不是很低吗? 确实是。 后续章节将从源码角度来解答: Python 如何通过 小整数池 等手段进行优化。

可变对象是指创建后可以修改的对象,典型的例子是 列表 ( list ):

>>> l = [1, 2]
>>> l
[1, 2]
>>> id(l)
4385900424

往列表里头追加数据,发现列表对象还是原来那个,只不过多了一个元素了:

>>> l.append(3)
>>> l
[1, 2, 3]
>>> id(l)
4385900424

实际上,列表对象内部维护了一个 动态数组 ,存储元素对象的指针:

 

列表对象增减元素,需要修改该数组。例如,追加元素 3 :

 

定长对象 与 变长对象

Python 一个对象多大呢?相同类型对象大小是否相同呢? 想回答类似的问题,需要考察影响对象大小的因素。

标准库 sys 模块提供了一个查看对象大小的函数 getsizeof :

>>> import sys
>>> sys.getsizeof(1)
28

先观察整数对象:

>>> sys.getsizeof(1)
28
>>> sys.getsizeof(100000000000000000)
32
>>> sys.getsizeof(100000000000000000000000000000000000000000000)
44

可见整数对象的大小跟其数值有关,像这样 大小不固定 的对象称为 变长对象 。

我们知道,位数固定的整数能够表示的数值范围是有限的,可能导致 溢出 。 Python 为解决这个问题,采用类似 C++ 中 大整数类 的思路实现整数对象 —— 串联多个普通 32 位整数,以便支持更大的数值范围。 至于需要多少个 32 位整数,则视具体数值而定,数值不大的一个足矣,避免浪费。

 

这样一来,整数对象需要在头部额外存储一些信息,记录对象用了多少个 32 位整数。 这就是变长对象典型的结构,先有个大概印象即可,后续讲解整数对象源码时再展开。

接着观察字符串对象:

>>> sys.getsizeof('a')
50
>>> sys.getsizeof('abc')
52

 

字符串对象也是变长对象,这个行为非常好理解,毕竟字符串长度不尽相同嘛。 此外,注意到字符串对象大小比字符串本身大,因为对象同样需要维护一些额外的信息。 至于具体需要维护哪些信息,同样留到源码剖析环节中详细介绍。

那么,有啥对象是定长的呢?—— 浮点数对象 float :

>>> sys.getsizeof(1.)
24
>>> sys.getsizeof(1000000000000000000000000000000000.)
24

浮点数背后是由一个 double 实现,就算表示很大的数,浮点数对象的大小也不变。

 

为啥 64 位的 double 可以表示这么大的范围呢?答案是:牺牲了精度。

>>> int(1000000000000000000000000000000000.)
999999999999999945575230987042816

由于浮点数存储位数是固定的,它能表示的数值范围也是有限的,超出便会抛锚:

>>> 10. ** 1000
Traceback (most recent call last):
	File "<stdin>", line 1, in <module>
OverflowError: (34, 'Result too large')

本文章素材来源于网络,如有侵权请联系删除。

Python源码剖析.pdf 话不多说,pdf可以下载的很多,但是有目录的能有几个?? 本人亲自整理的pdf目录 立即下载

相关推荐

Gromacs空蛋白模拟实战:从PDB文件到动力学轨迹的完整流程解析

本文详细解析了使用Gromacs进行空蛋白分子动力学模拟的完整实战流程。从PDB文件处理、力场选择与拓扑构建,到模拟盒子创建、溶剂化与电荷中和,再到能量最小化、NVT/NPT平衡及最终的生产模拟与基础分析,提供了每一步的命令详解和关键注意事项,旨在帮助计算生物学研究者系统掌握这一核心研究工具。

weixin_28454475的博客 276

Python 对象模型

1. Python中的旧式类与新式类  你一定在其它地方见过这样的表述,“在 Python 中,一切皆对象”。      那么,它意味着什么呢?是不是像其它编程语言一样(例如 Java),在 Python 中的一切都是基类的实例?如果是,那么 Python 中的基类是什么?我听说过 Python 中的 object 类,它是那个基类吗?      Python 中这一块的内容相当复杂。Pyt

东隅已逝,桑榆非晚。 772

智能农业大棚

目 录 摘要 1.绪论 2.系统概述及单片机介绍 2.1整体方案设计思想 2.2系统组成 2.2.1主控芯片的选择 2.2.2传感器模块选择 2.2.3电机驱动模块 2.3 单片机介绍 2.3.1 AT89C51单片机的基本组成 2.3.2AT89C51主要特性 2.3.3管脚说明 2.3.4 AT89C51单片机的存储器 2.3.4.1 程序存储器 2.3.4.2 数据存储器 2.3.5 振荡电路和时钟 2.3.6 AT89C51的中断

weixin_70886450的博客 1327

Python源码剖析-深度探索动态语言核心技术

Python源码剖析-深度探索动态语言核心技术内容简介Python 总体架构Python源代码的组织 内容简介 为了更好地利用python语言,无论是python本身还是和C/C++配合使用,深刻理解python的运行原理都是非常重要的,本文以CPython源码为研究对象,深入剖析Python的实现。主要包含: Python内置对象 Python虚拟机 Python高级特性 本文参考: Python源码剖析一书 学习建议:唯有亲身尝试,才能深解其中三昧。 在真实的源码和文章的描述相比较揣摩,动手捣鼓捣鼓

专注游戏研发 4222

从像素到光影:解析《黑神话:悟空》中Nanite与Lumen的协同渲染革命

本文深度解析了《黑神话:悟空》如何利用Unreal Engine 5的Nanite与Lumen技术实现渲染革命。Nanite处理亿级多边形几何细节,无需传统LOD优化;Lumen提供全动态全局光照,实现实时光线反弹。两者协同工作,为游戏带来电影级视觉体验,重塑了实时渲染的技术标准与工作流程。

f6g7h8i9j的博客 425

常见的AXI总线仲裁器概述-AXI协议理解(一)

SoC 设计广泛采用共享总线式的片上通信,其中的仲裁器是共享总线的关键技术之一。AMBA AXI 总线协议以高性能、高频率的系统设计为目标,适合高带宽、低延迟的系统设计,可以达到高频率的操作而不需要复杂的总线桥,满足众多部件的接口要求,具备高度灵活的互联结构,并且向后兼容 AHB 和 APB 接口。

Paul 安的博客 1万+

《Python源码剖析》

1. Python内建对象 对象是数据以及基于这些数据的操作的集合,在Python中,对象就是为C中的结构体在堆上申请的一块内存。 在Python中,一个对象一旦被创建,它在内存中的大小就是不变的了,那些需要容纳可变长度数据的对象只能在对象内维护一个指向一块可变大小的内存区域的指针。 1.1.1 对象机制的基石 -- PyObject [object.h] typedef struct ...

420

汽车级智能栅极驱动器深度解析 | 连载01:DRV871x-Q1系列产品架构与核心特性

集成度:单芯片集成多通道驱动器、电源管理、电流检测智能化:自适应控制算法,减少外部元件可靠性:多重保护机制,满足汽车级要求灵活性:SPI和硬件两种接口,适应不同应用需求。

VehSwHwDeveloper的博客 1153

【专题】python源码解读

文章目录准备工作Python整体结构源码目录Python对象Python内对象类型对象对象的创建类型的类型Python中的整数对象小整形对象大整数对象 准备工作 Python整体结构 python架构主要分为三部分 python文件 python解释器 scanner词法分析,将代码且分为一个个token parser词法分析建立AST compiler根据AST生成python字节码 code Evaluator(虚拟机)执行这些字节码 运行时环境 内建对象:list dict 内存分配器:和

qq_36581961的博客 3625

【雕爷学编程】MicroPython手册之 Teensy 4.1 实时时钟 (RTC)

在类的初始化函数中,定义了用于控制I2C总线的i2c对象和RTC模块的I2C地址。接着,使用该引脚初始化了一个Pin对象。它还提供了8个串口,3个SPI端口,3个I2C端口,2个I2S/TDM数字音频端口,3个CAN总线(其中一个支持CAN FD),以及一个SDIO(4位数据)原生SD卡端口12。2、内存:Teensy 4.1配备了1024 KB的RAM(其中512 KB是紧密耦合的),8 MB的Flash(其中64 KB用于恢复和EEPROM模拟),以及两个位置可以选择添加更多的QSPI内存芯片。

雕爷学编程 575

PCIe 6.0 – 关于 PCI Express Gen6 您需要知道的一切

幸运的是,PCIe 6.0 FEC 足够轻,对延迟的影响最小。在电气层上,PCIe 6.0 使用 PAM4 信号(“四级脉冲幅度调制”),每个时钟周期将 2 位组合为 4 个幅度级别(00、01、10、11),与 PCIe 5.0 和前几代相比,它使用 NRZ 调制,每个时钟周期 1 位和两个幅度级别 (0, 1)。虽然 PAM4 信号更容易出错,但由于调制技术的性质,与 PCIe 5.0 相比,通道损耗不受影响,因此 PCB 上 PCIe 6.0 信号的范围将与 PCIe 5.0 相同。

qq_43416206的博客 3432

python对象模型

1、python的对象模型 对象是python语言中最基本的概念之一,python中的一切都是对象。python中许多内置对象可供编程者直接使用,例如数字、字符串、字节串、列表,元组,字典,集合,异常等等。 列表如下: 对象类型 类型名称 示例 简要说明 数字 int,float,double,comple 1234,3.14,3+4j 数字大小没有限制,内置支持复数及其运算 字符串 str ‘ssr’,’‘python’’,’’’ asd ‘’’,r’abc’,R’abc’ 单引号,双

风吹落叶的博客 792

在YOLO中扩充新类别并且不影响旧类的识别精度

让我们先从简单的部分开始:用我们的新类训练自定义 YOLOv8 模型。在本教程中,我们将向模型添加车牌类。我们将使用Roboflow 中的一个数据集。这个数据集有两个车牌类。在开始训练之前,我们还必须对库进行一些更改。为了节省时间,我还将本教程中我们将进行的更改转换为补丁该补丁包含多项更改,但大多数更改都用于指南的下一部分。if RANK!= -1:是的,我们将编写一个回调。我们希望将此自定义训练模型的头部与 COCO 预训练模型中的旧头部一起使用。

如果想成为中心,那么就到中心去吧。 1225

python源码剖析 怎么样_「Python源码剖析」对象模型有哪些特色?本文详解

Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比, Python 有自己独特的一面。 这让很多开发人员在学习 Python 时,多少有些无所适从。 那么,Python 对象模型都有哪些特色呢?一切皆对象首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。 换句话讲, Python 不再区别对待基本类型和...

weixin_39640221的博客 106

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 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")

python数组自增_「Python源码剖析」对象模型有哪些特色?本文详解

Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比, Python 有自己独特的一面。 这让很多开发人员在学习 Python 时,多少有些无所适从。 那么,Python 对象模型都有哪些特色呢?一切皆对象首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。 换句话讲, Python 不再区别对待基本类型和...

weixin_39865952的博客 69

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python的对象模型_【Python源码剖析】对象模型概述

Python?是一门?面向对象?语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比,?Python?有自己独特的一面。 这让很多开发人员在学习?Python?时,多少有些无所适从。 那么,Python?对象模型都有哪些特色呢?一切皆对象首先,在?Python?世界,?基本类型也是对象?,与通常意义的“对象”形成一个有机统一。 换句话讲,?Python?不再区别对待基本类型和...

weixin_39782709的博客 93

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python源代码-Python 源码深度剖析

课程亮点了解Python运行机制和设计思想;熟悉背后的数据结构和算法原理;结合工程实际,掌握高效程序设计之道;高级面试知识点,求职更自信;大量图表辅助学习,难点知识轻松拿下。课程简介能用Python完成开发需求,但是经常调用各种库,不懂更深的原理?开发出来的程序逻辑上没有问题,但是性能不够好?想争取更好的工作机会,面试却败在了内部原理上?到底如何才能提升我的 Python 开发水平,向更高一级的岗...

weixin_37988176的博客 506

python源码_【Python源码剖析】对象模型概述

Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比, Python 有自己独特的一面。 这让很多开发人员在学习 Python 时,多少有些无所适从。 那么,Python 对象模型都有哪些特色呢?一切皆对象首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。 换句话讲, Python 不再区别对待基本类型和...

weixin_39731682的博客 86

python源码剖析_[ Python 源码剖析] 对象模型概述

Python是一门面向对象语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比,Python有自己独特的一面。 这让很多开发人员在学习Python时,多少有些无所适从。 那么,Python对象模型都有哪些特色呢?一切皆对象首先,在Python世界,基本类型也是对象,与通常意义的“对象”形成一个有机统一。 换句话讲,Python不再区别对待基本类型和...

weixin_39739234的博客 120

python源码剖析 怎么样_【Python源码剖析】对象模型概述

Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比, Python 有自己独特的一面。 这让很多开发人员在学习 Python 时,多少有些无所适从。 那么,Python 对象模型都有哪些特色呢?一切皆对象首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。 换句话讲, Python 不再区别对待基本类型和...

weixin_39815456的博客 95

python的对象模型_[ Python 源码剖析] 对象模型概述

Python是一门面向对象语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比,Python有自己独特的一面。 这让很多开发人员在学习Python时,多少有些无所适从。 那么,Python对象模型都有哪些特色呢?一切皆对象首先,在Python世界,基本类型也是对象,与通常意义的“对象”形成一个有机统一。 换句话讲,Python不再区别对待基本类型和...

weixin_39622399的博客 108

python代码分析-Python 源码深度剖析

课程亮点了解Python运行机制和设计思想;熟悉背后的数据结构和算法原理;结合工程实际,掌握高效程序设计之道;高级面试知识点,求职更自信;大量图表辅助学习,难点知识轻松拿下。课程简介能用Python完成开发需求,但是经常调用各种库,不懂更深的原理?开发出来的程序逻辑上没有问题,但是性能不够好?想争取更好的工作机会,面试却败在了内部原理上?到底如何才能提升我的 Python 开发水平,向更高一级的岗...

weixin_37988176的博客 1147

python源码_为什么要钻研Python源码

点击上方,关注我们?大家好,我是 fasionchan ,资深 Python 工程师,曾就职于 腾讯 、网易游戏 、蚂蚁金服 等互联网公司。经过多年的摸爬滚打,我对 Python 开发有一些自己的体会,深知源码研究的意义。我就职于网易游戏时,曾在内部开展 Python源码剖析 系列技术分享,收获颇多。此外,我从 2014 年便开始参与公司技术人才的招聘工作,经常在面试中考察候选人对 Py...

weixin_39575565的博客 114

flask框架地方特色美食小吃分享平台毕设源码+论文

本选题将以地方特色美食小吃为研究情景,重点分析和研究地方特色美食小吃分享平台的构建与运营问题,以期探寻地方特色美食小吃在网络平台分享过程中的发展与推广的问题原因,提出针对性的对策建议,为后续更加深入的研究提供基础。最后,通过持续集成和测试,确保应用的稳定性和可靠性,完成开发后进行部署,使应用可以在服务器上运行并对外提供服务。[2] 孙强, 李建华, 李生红. "基于Python的文本分类系统开发研究"[J]. 计算机应用与软件, 2011, 28(03): 13-14.特点包括简单性、灵活性和易于扩展。

皓霖学长毕设 1304
上一篇: 零基础小白如何快速入门python爬虫?我用这篇文章告诉你
下一篇: 国庆去哪玩?用Python爬取了全国5000家旅游景区(记得收藏)
python阿喵
博客等级 码龄6年 169粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值