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 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了 ...
随机推荐
- [NOIP2010 提高组] 关押罪犯 - 洛谷
P1525 [NOIP2010 提高组] 关押罪犯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 种类并查集 #include <bits/stdc++.h> #def ...
- AtCoder Beginner Contest 311
Toyota Programming Contest 2023#4(AtCoder Beginner Contest 311) A - First ABC (atcoder.jp) 记录一下\(ABC ...
- 一次生产环境mysql迁移操作(一)数据归档
一次生产环境mysql迁移操作(一)数据归档 一次生产环境mysql迁移操作(二)mysql空间释放(碎片整理) 背景 在项目过程中我们经常要对数据库进行迁移.归档.拆分等等操作,现在描述下几种方案 ...
- Win32封装对话框类
[主程序入口.cpp] #include <windows.h> #include <tchar.h> #include "resource.h" #inc ...
- 强!34.1K star! 再见Postman,新一代API测试利器,功能强大、颜值爆表!
1.引言 在当今的互联网时代,API(应用程序编程接口)已经成为连接不同软件系统的桥梁.作为一名开发者,掌握API测试技能至关重要.市面上的API测试工具琳琅满目,今天我们要介绍的是一款开源.跨平台的 ...
- 【GitHub】上传代码通用操作等(附下载单个文件夹或文件)
一.创建GitHub账号以及配置 参考我的另一篇文章:<[Mac系统 + Git]之上传项目代码到github上以及删除某个文件夹> 二.创建新的个人知识库 前面配置完之后,下面讲的再新建 ...
- 四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat
四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat @ 目录 四,分析Spring Bo ...
- Seata 1.3.0 Oracle 回滚测试验证 报错 ORA-02289: 序列不存在
使用Seata 1.3.0版本,测试A服务调用B服务,且A方法中,手动写了一个异常,测试是否正常回滚(Mysql已经测试过) 发现报错:ORA-02289: 序列不存在 一看就是undo_log这张表 ...
- 鸿蒙Next-支付宝SDK接入教程
App适配鸿蒙Next,开始做支付功能了,目前来说只有支付宝支持鸿蒙Next,微信还没上架,但是支付宝官方的文档跟Demo都很老,下载官方的Demo用最新版的DevEco-Studio导入都不成功. ...
- 【JS设计模式笔记】-观察者模式(即发布-订阅模式)(结构型)
发布-订阅模式的作用 比如常见的发送短信就是一个典型的发布-订阅模式,例如,小明.小红去售楼处购买房子,但是售楼处的工作人员告诉小明.小红当前楼盘已经售罄,新楼盘还没有开售,这个时候,小明.小红把自己 ...