Python一些常见的技巧及语句!!
题记:关于遇到的一些python代码或者不清楚用法的函数、类别等我会在这里记录下来,方便日后学习和交流。之后研究生三年我会持续更新学习,可能得记录几千个吧。
1. copy.copy()和copy.deepcopy()
深拷贝和浅拷贝的关系
确实好用
import copy
a = [1,2,3]
b = [4,5,6]
c = copy.copy(a)
print(c)
2.
e = np.arange(4) #[0,1,2,3]
f = e.reshape((2,2)) #重新规划为2×2
#print(f)
g = np.transpose(f)
print(g) #求转置
print(type(g)) #<class 'numpy.ndarray'>
h = g.tolist() #转化为列表的形式
print(h)
print(type(h)) #<class 'list'>
d = np.array(
[
[1,2,3],
[4,5,6],
[7,8,9]
]
)
#print(d)
3.class里面class
下面这种用法,我发现有好多人都喜欢这么写代码,学习一下,第一次见过
class A:
def __init__(self):
print("a")
class b:
def __init__(self):
print("b")
class c:
def __init__(self):
print("c")
class d:
def __init__(self):
print("d")
class e:
def __init__(self):
print("e")
class B(A):
def __init__(self):
super().__init__()
class C:
pass
a = A()
b = a.b()
c = a.c()
d = c.d()
e = c.e()
4. torch里面的random的一般用法
import torch
a = torch.rand(3,4,6,6)
# 生成一个形状为(3, 4)的张量,元素值在[0, 1)之间
b = torch.rand((3,4))
# 生成一个形状为(3, 4)的张量,元素值服从标准正态分布
c = torch.randn((3,4))
d = torch.randint(1,10,(3,4))
# 生成一个长度为20的随机整数排列
e = torch.randperm(20)
print(c)
print(e)
5
如果在调用函数时,和**都是分配参数用的
调用函数时,一个的情况:
例如print函数
def myprint(x,y):
print(x)
print(y)
运行运行
这下形参有两个了,但是我能不能只传入一个形参?
对,“调用函数时分配参数”跟“定义函数时收集参数”,反过来了!
假设你还有一个元组:
params=(1,2)
可以通过如下方式调用myprint函数:
myprint(*params)
就可以输出:
1
2
调用函数时,两个**的情况:
和上面3.1.2很像,是分配字典的。
这回params是一个字典了:
params={'x':1,'y':2}
可以通过如下方式调用myprint函数:
myprint(**params)
就可以输出:
1
2
6 reset代码实现
from torch.nn import functional as F
import torch
import torch.nn as nn
#定义残差网络
class Residual(nn.Module):
def __init__(self,input_channels,output_channels,use_1x1conv=False,strides=1):
super().__init__()
self.conv1 = nn.Conv2d(
input_channels,output_channels,kernel_size=3,padding=1,stride=strides
)
self.conv2 = nn.Conv2d(
output_channels, output_channels, kernel_size=3, padding=1, stride=strides
)
if use_1x1conv:
self.conv3 = nn.Conv2d(
input_channels, output_channels, kernel_size=1, stride=strides
)
else:
self.conv3 = None
self.bn1 = nn.BatchNorm2d(output_channels)
self.bn2 = nn.BatchNorm2d(output_channels)
self.relu = nn.ReLU(inplace=True)
"前向传播"
def forward(self,X):
Y = self.relu(self.bn1(self.conv1(X)))
Y = self.bn2(self.conv2(Y))
if self.conv3:
X = self.conv3(X)
Y += X
return self.relu(Y)
b1 = nn.Sequential(nn.Conv2d(1,64,kernel_size=7,stride=2,padding=1),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.MaxPool2d(kernel_size=3,stride=2,padding=1))
"这里包含了很多个残差快"
def resnet_block(input_channels,output_channels,num_residual,first_block=False):
blk=[]
for i in range(num_residual):
if i == 0 and not first_block:
blk.append(
Residual(input_channels,output_channels,use_1x1conv=True,strides=2)
)
else:
blk.append(
Residual(input_channels,output_channels)
)
return blk
b2 = nn.Sequential(*resnet_block(64,64,2 ,first_block=True))
b3 = nn.Sequential(*resnet_block(64,128,2))
b4 = nn.Sequential(*resnet_block(128,256,2))
b5 = nn.Sequential(*resnet_block(256,512,2))
net = nn.Sequential(b1,b2,b3,b4,b5,nn.AdaptiveAvgPool2d((1,1)),nn.Flatten(),nn.Linear(512,10))
"-----------------------------------------------------------"
X = torch.rand(size=(1,1,224,224))
for layer in net:
X = layer(X)
print(layer.__class__.__name__, '输出的维数: ', X.shape)
Python一些常见的技巧及语句!!的更多相关文章
- python编程常见小技巧
#主要是记录常见的小问题以及解决办法 ##1.复制的代码,经常出现TAB和空格不一致的情况 将tab或者空格删除,然后重新打出空格或者tab就可以了: ##2.python读取文件,经常出现的编码en ...
- python基础===Python 代码优化常见技巧
Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...
- [转] Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
- Python 代码性能优化技巧(转)
原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...
- Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
- 【循序渐进学Python】5.Python常用流程控制及其他语句
1. 赋值语句常用技巧 通过序列解包(sequence unpacking)可以将多个值的序列解开,让后一一放置到变量的序列中.解包的序列中的元素必须和等号左边变量数量一致.如下: values = ...
- Python:常见错误集锦(持续更新ing)
初学Python,很容易与各种错误不断的遭遇.通过集锦,可以快速的找到错误的原因和解决方法. 1.IndentationError:expected an indented block 说明此处需要缩 ...
- Python初学者常见错误详解
Python初学者常见错误详解 0.忘记写冒号 在 if.elif.else.for.while.class.def 语句后面忘记添加 “:” if spam == 42 print('Hello ...
- Python 最常见的 170 道面试题解析:2019 最新
Python 最常见的 170 道面试题解析:2019 最新 2019年06月03日 23:30:10 GitChat的博客 阅读数 21329 文章标签: PythonPython入门Python面 ...
- Python 最常见的 170 道面试题全解析:2019 版
Python 最常见的 170 道面试题全解析:2019 版 引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了 ...
随机推荐
- [简单] 树上的dfs & bfs_洛谷P5908 猫猫和企鹅
题目链接https://www.luogu.com.cn/problem/P5908 题目大意: \[\begin{align*} & 给定n个点构成一颗树 每条边val=1\\ & ...
- 【VMware vCenter】一次性说清楚 vCenter Server 的 CLI 部署方式。
VMware vCenter Server 是 VMware vSphere 解决方案的核心组件,用于管理多个 ESXi 主机并实现更多高级功能特性(如 HA.DRS 以及 FT 等),相信大家已经非 ...
- Java 大文件IO操作效率对比【我说说 你瞅瞅】
Java 文件IO操作效率对比 注:本文只做时间消耗层面对比,内存占用层面需要特别关注! 1. 参数说明 文件总大小:2,111,993,850 字节(2.11 GB) static String d ...
- games101 作业4及作业5 详解光线追踪框架
games101 作业4及作业5 详解光线追踪框架 作业4 代码分析 作业四的代码整体比较简单 主要流程就是 通过鼠标事件 获取四个控制点的坐标 然后绘制贝塞尔曲线的内容就由我们来完成 理论分析 贝塞 ...
- 2023 ICPC 杭州题解
游记 gym F. Top Cluster std 二分答案.需要判断点权 \(\le mid\) 的点到询问点的最大距离.直径. K. Card Game 设 \(f[l,r]\) 为 \([l,r ...
- Linux内核 自旋锁spin lock,教你如何用自旋锁让ubuntu死锁
背景 由于在多处理器环境中某些资源的有限性,有时需要互斥访问(mutual exclusion),这时候就需要引入锁的概念,只有获取了锁的任务才能够对资源进行访问,由于多线程的核心是CPU的时间分片, ...
- Django集成腾讯COS对象存储
前言 最近遇到一个场景需要把大量的资源文件存储到 OSS 里,这里选的是腾讯的 COS 对象存储 (话说我接下来想搞的 SnapMix 项目也是需要大量存储的,我打算搭个 MinIO 把 24T 的服 ...
- React挂载dom无效的问题
话不多说,先上代码. 根据我的猜测,ReactDOM.render()这个函数,也就是挂载的意思是将内容进行替换,所以我的vdom1在调试的时候没有展示出来. 然后我创建了两个div块,分别挂载vdo ...
- 【前端js】之小数点保留时的四舍五入问题
项目遇到金额小数点保留位数,极个别的数会差一分,经调查是因为js的问题. 解决办法: # 方法一:保留两位小数 function keepTwoDecimal(num) { var result = ...
- 十种SQL的语法
一.ORDER BY FIELD()自定义排序逻辑 ORDER BY FIELD(str,str1,...) 自定义排序sql如下: SELECT * from order_diy ORDER BY ...