导航:首页 > 编程语言 > python编程深层复制

python编程深层复制

发布时间:2023-02-19 15:35:08

A. python3 浅层复制和深层复制有什么区别

浅复制对象指向同一个内存地址,深复制对象指向不同的内存地址。

B. python怎么把list依次赋值

import List2=.deep(List1)这样赋值,List2初始值和List1一样,因为是深度复制List1中的元素,所有深层元素都引用的是不同的对象,List1的任何改变不会影响List2

C. 深度学习 python怎么入门 知乎

自学深度学习是一个漫长而艰巨的过程。您需要有很强的线性代数和微积分背景,良好的Python编程技能,并扎实掌握数据科学、机器学习和数据工程。即便如此,在你开始将深度学习应用于现实世界的问题,并有可能找到一份深度学习工程师的工作之前,你可能需要一年多的学习和实践。然而,知道从哪里开始,对软化学习曲线有很大帮助。如果我必须重新学习Python的深度学习,我会从Andrew Trask写的Grokking deep learning开始。大多数关于深度学习的书籍都要求具备机器学习概念和算法的基本知识。除了基本的数学和编程技能之外,Trask的书不需要任何先决条件就能教你深度学习的基础知识。这本书不会让你成为一个深度学习的向导(它也没有做这样的声明),但它会让你走上一条道路,让你更容易从更高级的书和课程中学习。用Python构建人工神经元
大多数深度学习书籍都是基于一些流行的Python库,如TensorFlow、PyTorch或Keras。相比之下,《运用深度学习》(Grokking Deep Learning)通过从零开始、一行一行地构建内容来教你进行深度学习。

《运用深度学习》
你首先要开发一个人工神经元,这是深度学习的最基本元素。查斯克将带领您了解线性变换的基本知识,这是由人工神经元完成的主要计算。然后用普通的Python代码实现人工神经元,无需使用任何特殊的库。
这不是进行深度学习的最有效方式,因为Python有许多库,它们利用计算机的图形卡和CPU的并行处理能力来加速计算。但是用普通的Python编写一切对于学习深度学习的来龙去是非常好的。
在Grokking深度学习中,你的第一个人工神经元只接受一个输入,将其乘以一个随机权重,然后做出预测。然后测量预测误差,并应用梯度下降法在正确的方向上调整神经元的权重。有了单个神经元、单个输入和单个输出,理解和实现这个概念变得非常容易。您将逐渐增加模型的复杂性,使用多个输入维度、预测多个输出、应用批处理学习、调整学习速率等等。
您将通过逐步添加和修改前面章节中编写的Python代码来实现每个新概念,逐步创建用于进行预测、计算错误、应用纠正等的函数列表。当您从标量计算转移到向量计算时,您将从普通的Python操作转移到Numpy,这是一个特别擅长并行计算的库,在机器学习和深度学习社区中非常流行。
Python的深度神经网络
有了这些人造神经元的基本构造块,你就可以开始创建深层神经网络,这基本上就是你将几层人造神经元叠放在一起时得到的结果。
当您创建深度神经网络时,您将了解激活函数,并应用它们打破堆叠层的线性并创建分类输出。同样,您将在Numpy函数的帮助下自己实现所有功能。您还将学习计算梯度和传播错误通过层传播校正跨不同的神经元。

随着您越来越熟悉深度学习的基础知识,您将学习并实现更高级的概念。这本书的特点是一些流行的正规化技术,如早期停止和退出。您还将获得自己版本的卷积神经网络(CNN)和循环神经网络(RNN)。
在本书结束时,您将把所有内容打包到一个完整的Python深度学习库中,创建自己的层次结构类、激活函数和神经网络体系结构(在这一部分,您将需要面向对象的编程技能)。如果您已经使用过Keras和PyTorch等其他Python库,那么您会发现最终的体系结构非常熟悉。如果您没有,您将在将来更容易地适应这些库。
在整本书中,查斯克提醒你熟能生巧;他鼓励你用心编写自己的神经网络,而不是复制粘贴任何东西。
代码库有点麻烦
并不是所有关于Grokking深度学习的东西都是完美的。在之前的一篇文章中,我说过定义一本好书的主要内容之一就是代码库。在这方面,查斯克本可以做得更好。
在GitHub的Grokking深度学习库中,每一章都有丰富的jupiter Notebook文件。jupiter Notebook是一个学习Python机器学习和深度学习的优秀工具。然而,jupiter的优势在于将代码分解为几个可以独立执行和测试的小单元。Grokking深度学习的一些笔记本是由非常大的单元格组成的,其中包含大量未注释的代码。

这在后面的章节中会变得尤其困难,因为代码会变得更长更复杂,在笔记本中寻找自己的方法会变得非常乏味。作为一个原则问题,教育材料的代码应该被分解成小单元格,并在关键区域包含注释。
此外,Trask在Python 2.7中编写了这些代码。虽然他已经确保了代码在Python 3中也能顺畅地工作,但它包含了已经被Python开发人员弃用的旧编码技术(例如使用“for i in range(len(array))”范式在数组上迭代)。
更广阔的人工智能图景
Trask已经完成了一项伟大的工作,它汇集了一本书,既可以为初学者,也可以为有经验的Python深度学习开发人员填补他们的知识空白。
但正如泰温·兰尼斯特(Tywin Lannister)所说(每个工程师都会同意),“每个任务都有一个工具,每个工具都有一个任务。”深度学习并不是一根可以解决所有人工智能问题的魔杖。事实上,对于许多问题,更简单的机器学习算法,如线性回归和决策树,将表现得和深度学习一样好,而对于其他问题,基于规则的技术,如正则表达式和几个if-else子句,将优于两者。

关键是,你需要一整套工具和技术来解决AI问题。希望Grokking深度学习能够帮助你开始获取这些工具。
你要去哪里?我当然建议选择一本关于Python深度学习的深度书籍,比如PyTorch的深度学习或Python的深度学习。你还应该加深你对其他机器学习算法和技术的了解。我最喜欢的两本书是《动手机器学习》和《Python机器学习》。
你也可以通过浏览机器学习和深度学习论坛,如r/MachineLearning和r/deeplearning subreddits,人工智能和深度学习Facebook组,或通过在Twitter上关注人工智能研究人员来获取大量知识。
AI的世界是巨大的,并且在快速扩张,还有很多东西需要学习。如果这是你关于深度学习的第一本书,那么这是一个神奇旅程的开始。

D. 这是Python语言,请问其中的第五行dc=……有什么用为什么用dc

那是定义的一个变量名,作用是深拷贝对象d,无论你是用dc,还是用其他字母代替都是无所谓的。
从你这个例子来看应该是用来研究python引用的区别.
. 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
.deep 深拷贝 拷贝对象及其子对象

这里有个更好的例子可以参考:

import
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用
c = .(a) #对象拷贝,浅拷贝
d = .deep(a) #对象拷贝,深拷贝
a.append(5) #修改对象a
a[4].append('c') #修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d

E. Python的特点有哪些

python的五个特点:

1、简单易学

python是一种代表简单主义思想的语言,阅读一个良好的python程序就感觉像是在读英语段落一样,尽管这个英语段的语法要求非常严格。python最大的优点之一是具有伪代码的本质,它使我们在开发python程序时,专注的是解决问题,而不是搞明白语言本身。

2、面向对象

python既支持面向过程编程,也支持面向对象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。

与其他主要的语言如C++和Java相比,python以一种非常强大又简单的方式实现面向对象编程。

3、可移植性

由于python的开源本质,它已经被移植在许多平台上。如果小心地避免使用依赖于系统的特性,那么所有python程序无需修改就可以在下述任何平台上运行,如:Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、QNX、VMS、Windows
CE,甚至还有PocketPC、Symbian以及Google基于Linux开发的android平台。

4、解释性

一个用编译型语言如C或C++写的程序可以从源文件转换到一个计算机使用的语言。这个过程通过编译器和不同的标记、选项完成。当运行程序的时候,连接转载器软件把程序从硬盘复制到内存中并且运行。

而python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。在计算机内部,python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。

事实上,由于不再担心如何编译程序,如何确保连接转载正确的库等,这一切使得使用python变得更为简单。

5、开源

python是FLOSS之一。简单地说,你可以自由地发布这个软件的拷贝,阅读它的源代码,对它做改动,把它的一部分用于新的自由软件中。

FLOSS是基于一个团体分享知识的概念,这是为什么python如此优秀的原因之一;它是由一群希望看到一个更加优秀的python的人创造并经常改进这的。

F. --- 浅层 (shallow) 和深层 (deep) 复制操作

--- 浅层 (shallow) 和深层 (deep) 复制操作

Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定 (bindings) 关系。对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象。

直接赋值: 其实就是对象的引用(别名)。

浅拷贝(): 拷贝父对象,不会拷贝对象的内部的子对象。

深拷贝(deep): 模块的 deep 方法,完全拷贝了父对象及其子对象。

模块提供了通用的浅层复制和深层复制操作的方法。

.( x )返回 x 的浅层复制。

.deep( x [, memo ])返回 x 的深层复制。

exception  .error针对模块特定错误引发。

浅层复制和深层复制之间的区别仅与复合对象 (即包含其他对象的对象,如列表或类的实例) 相关:

一个 浅层复制 会构造一个新的复合对象,然后(在可能的范围内)将原对象中找到的 引用 插入其中。

一个 深层复制 会构造一个新的复合对象,然后递归地将原始对象中所找到的对象的 副本 插入。

深层复制操作通常存在浅层复制操作不存在的两个问题:

递归对象 (直接或间接包含对自身引用的复合对象) 可能会导致递归循环。

由于深层复制会复制所有内容,因此可能会过多复制(例如本应该在副本之间共享的数据)。

deep()函数避免通过以下方法这些问题:

保留在当前复制过程中已复制的对象的 "备忘录" (memo) 字典;

允许用户定义的类重载复制操作或复制的组件集合。

该模块不复制模块、方法、栈追踪(stack trace)、栈帧(stack frame)、文件、套接字、窗口、数组以及任何类似的类型。它通过不改变地返回原始对象来(浅层或深层地)“复制”函数和类。

制作字典的浅层复制可以使用 dict.() 方法,而制作列表的浅层复制可以通过复制整个列表的切片完成,例如,copied_list = original_list[:]。

类可以使用与控制序列化(pickling)操作相同的接口来控制复制操作,关于这些方法的描述信息请参考 pickle 模块。实际上,模块使用的正是从 reg 模块中注册的 pickle 函数。

想要给一个类定义它自己的拷贝操作实现,可以通过定义特殊方法____()和__deep__()。 调用前者以实现浅层拷贝操作,该方法不用传入额外参数。

调用后者以实现深层拷贝操作——它应传入一个参数即memo字典。 如果__deep__()实现需要创建一个组件的深层拷贝,它应当调用 deep() 函数并以该组件作为第一个参数,而将 memo 字典作为第二个参数。

下面我们通过例子来深入理解

字典浅拷贝实例

#浅拷贝可以导入也可以不导入>>>a = {1: [1,2,3]}>>> b = a.()>>> a, b({1: [1,2,3]}, {1: [1,2,3]})>>> a[1].append(4)>>> a, b({1: [1,2,3,4]}, {1: [1,2,3,4]})

字典深拷贝实例

#深度拷贝必须导入模块>>>import>>> c = .deep(a)>>> a, c({1: [1,2,3,4]}, {1: [1,2,3,4]})>>> a[1].append(5)>>> a, c({1: [1,2,3,4,5]}, {1: [1,2,3,4]})

解析

1、 b = a:: 赋值引用,a 和 b 都指向同一个对象。



2、b = a.(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。



b = .deep(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。



更多实例(列表)

以下实例是使用 模块的 .( 浅拷贝 )和(.deep ):

#!/usr/bin/python# -*-coding:utf-8 -*-importa = [1,2,3,4, ['a','b']]#原始对象b = a#赋值,传对象的引用c = .(a)#对象拷贝,浅拷贝d = .deep(a)#对象拷贝,深拷贝a.append(5)#修改对象aa[4].append('c')#修改对象a中的['a', 'b']列表对象print('a = ', a )print('b = ', b )print('c = ', c )print('d = ', d )

以上实例执行输出结果为:

('a = ', [1,2,3,4, ['a','b','c'],5])('b = ', [1,2,3,4, ['a','b','c'],5])('c = ', [1,2,3,4, ['a','b','c']])('d = ', [1,2,3,4, ['a','b']])

阅读全文

与python编程深层复制相关的资料

热点内容
加密芯片的计算方法 浏览:187
手机存储为什么找不到微信文件夹 浏览:695
msf端口迁移命令 浏览:880
工商app积分怎么查询 浏览:143
铁路app怎么买火车票 浏览:309
移魅族除的app怎么添加 浏览:240
兔笼子大号加密 浏览:171
单片机程序烧录操作成功 浏览:878
指标高抛低吸点位源码 浏览:205
25匹压缩机铜管 浏览:570
单片机单灯左移05 浏览:150
买服务器练手什么配置 浏览:783
服务器被毁该怎么办 浏览:939
python私有库 浏览:514
Python有中文吗 浏览:736
麦块的服务器为什么都进不去 浏览:474
新买的服务器如何打开 浏览:35
安卓软件游戏怎么开发 浏览:319
用扑克摆爱心解压神器怎么摆 浏览:70
松下制冷压缩机 浏览:275