题记:关于遇到的一些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一些常见的技巧及语句!!的更多相关文章

  1. python编程常见小技巧

    #主要是记录常见的小问题以及解决办法 ##1.复制的代码,经常出现TAB和空格不一致的情况 将tab或者空格删除,然后重新打出空格或者tab就可以了: ##2.python读取文件,经常出现的编码en ...

  2. python基础===Python 代码优化常见技巧

    Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...

  3. [转] Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  4. Python 代码性能优化技巧(转)

    原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...

  5. Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  6. 【循序渐进学Python】5.Python常用流程控制及其他语句

    1. 赋值语句常用技巧 通过序列解包(sequence unpacking)可以将多个值的序列解开,让后一一放置到变量的序列中.解包的序列中的元素必须和等号左边变量数量一致.如下: values = ...

  7. Python:常见错误集锦(持续更新ing)

    初学Python,很容易与各种错误不断的遭遇.通过集锦,可以快速的找到错误的原因和解决方法. 1.IndentationError:expected an indented block 说明此处需要缩 ...

  8. Python初学者常见错误详解

    Python初学者常见错误详解 0.忘记写冒号 在 if.elif.else.for.while.class.def 语句后面忘记添加 “:”   if spam == 42 print('Hello ...

  9. Python 最常见的 170 道面试题解析:2019 最新

    Python 最常见的 170 道面试题解析:2019 最新 2019年06月03日 23:30:10 GitChat的博客 阅读数 21329 文章标签: PythonPython入门Python面 ...

  10. Python 最常见的 170 道面试题全解析:2019 版

    Python 最常见的 170 道面试题全解析:2019 版 引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了 ...

随机推荐

  1. NOI2024 集合 题解

    给个链接:集合. 很神秘的题目.基本上看到之后就可以想到哈希. 首先想到一个比较神秘的暴力.就是对于每个询问,扫一遍所有 \(a\) 中的数出现的位置,把它弄成一个哈希值(具体怎么弄随意)存到 set ...

  2. 异常处理,内置方法(__new__,__init__,__del__析构方法,单例模式,item系列)

    __new__ 创建一个对象 class A: def __init__(self): print('in init') def __new__(cls): print('in new') self= ...

  3. 使用 Docker 部署 FRP

    服务端 编写配置文件 vim ~/.config/frp/frps.toml bindPort = 7000 # Web Dashboard [webServer] addr = "0.0. ...

  4. 【测试平台开发】——01后端web开发框架Flask

    官方中文地址:https://flask.net.cn/ 官方英文地址:https://flask.palletsprojects.com/en/2.1.x/ github地址:https://git ...

  5. 报错解决:partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most likely due to a circular import)

    在运行jupyter 时候报错'partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most ...

  6. elementUI的select下拉框增加checkbox选择框(可全选/取消)

    elementUI的select下拉框增加checkbox选择框 一.实现效果 二.实现方法 1.组件代码如下: <div> <el-select ref="select& ...

  7. webpack笔记-loader的详细使用介绍(四)

    loader 基本上都是第三方类库,使用时需要安装,有一些 loader 还需要安装额外的类库,例如 less-loader 需要 less,babel-loader 需要 babel 等. load ...

  8. RxJS 系列 – Subject

    前言 RxJS 两大概念 Observable 和 Subject. 上一篇介绍了 Observable 这篇继续接受 Subject. 参考 RxJS 建立 Observable 的基礎 - Obs ...

  9. 一款超级给力的弱网测试神器—Qnet(附视频)

    一.APP弱网测试背景 App在使用的过程中,难免会遇到不同的弱网络环境,像在公车上.在地铁.地下车库等.在这种情况下,手机常常会出现网络抖动.上行或下行超时,导致APP应用中出现丢包延迟,从而影响用 ...

  10. HttpURLConnection和HttpClient使用

    HttpURLConnection 这是Java的标准类,继承自URLConnection,可用于向指定网站发送GET/POST请求. 方法描述 void setRequestMethod(Strin ...