python、pytorch
python多版本共存时,系统变量path中靠前的为默认版本。
Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。
1、pycharm中python交互模式
(1)cpython:>>>提示符
安装:conda install ipython
(2)ipython:ln[ ]提示符
如何切换?(soft-wrap)
2、命令行
函数:dir(),help()
windows路径名:\转义或r" 路径"
3、Dataset
Dataset是一个抽象类,提供一种方式获取数据及标签,来表示我们的数据集;通过将数据包装为Dataset类,然后传入Dataloader中。
1)len:返回数据集大小。
2)getitem:可以通过下标的方式 dataset[i] 的来取得第 i个数据。
4、Dataloader
Dataloader为网络提供不同的数据形式;常用操作有:batch_size, shuffle, num_workers(加载数据的时候使用几个子进程)
返回的是 Tensor 类型的数据
#分batch
list=[1,2,3,4,5,6,7,8,9,10,11]
batch=3
total_batch=len(list)/batch
if len(list)%batch!=0:
total_batch=int(total_batch+1)
else:
total_batch=int(total_batch)
for i in range(total_batch):
data=list[i*batch:(i+1)*batch]
print(data)
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10, 11]
5、pack_padded_sequence
6、pad_packed_sequence
把输入序列填充PAD到一样的长度,进行pack_padded_sequence ,然后再pad_packed_sequence。–方便RNN等模型训练。先填充pad,获得每个batch,然后在pack压紧,输入到模型中。
7、TensorBoard
相当于开启了一个本地服务器
可视化工具,可以查看神经网络各层的模型结构。
8、python
axis=0第一个维度(行)
axis=1第二个维度(列)
9、一个元素张量可以用x.item()得到元素值
import torch
x = torch.randn(3,2)
print(x)
print(x[2,1])
print(x[2,1].item())
tensor([[-0.2892, -0.0541],
[-1.5215, -0.8884],
[ 0.5422, -0.7643]])
tensor(-0.7643)
-0.7642977833747864
10、张量
ndim 表示张量的维度,一维张量的 ndim 值为 1,二维张量的 ndim 值为 2。
shape 表示张量的形状,它的值是一个列表,列表元素个数与张量的维度相等,每一个元素值表示张量在此维度的元素个数。
对于一个张量,它有三个维度,shape = 2× 2 × 2 ,这表示此张量有两个二维张量,每个二维张量中有两个一维张量,每个一维张量中有两个元素。
由于行向量和列向量都是向量,而向量在 PyTorch 中被抽象为一维张量,因此在 PyTorch 中不区分行向量和列向量,一律都是一维张量。
tensor = torch.randn(2, 2, 2)
print(tensor)
print(tensor.ndim)
print(tensor.shape)
tensor([[[ 0.0925, -1.4159],
[-0.6464, 0.5947]],
[[-1.3368, -0.2398],
[-0.1219, -0.5241]]])
3
torch.Size([2, 2, 2])
11、指本地目录的文件路径, windows下是\,linux和unix下是/。
在路径字符串前加 r,把转义字符 \ 变成普通字符。
绝对路径,用反斜杠
相对路径 ,用正斜杠 /
*通配符
12、可变参数
定义函数时,有时候我们不确定调用的时候会传递多少个参数。可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递。
#未命名变参 * ,解包
def func(*args):
print(type(args)) # 传入的参数会被视作一个元组
print(args)
for x in args:
print(x)
func(1)
func(1, 2, 3)
# <class 'tuple'>
# (1,)
# 1
# <class 'tuple'>
# (1, 2, 3)
# 1
# 2
# 3
#命名变参 **
def func(**kwargs):
print(type(kwargs))
print(kwargs)
for k, v in kwargs.items():
print(k, ": ", v)
func(a=1)
func(a=1, b=2, c=3)
# <class 'dict'>
# {'a': 1}
# a : 1
# <class 'dict'>
# {'a': 1, 'b': 2, 'c': 3}
# a : 1
# b : 2
# c : 3
位置参数 --> 默认参数 --> 包裹位置参数 --> 包裹关键字(定义和调用都要遵循)
调试
No module …
1 没导入库
2 python版本不共存
3 导的包中的包报错,可能库版本不匹配
基本语法
tuple:添加元素时为a+=(1,),直接加a+=(1)不对,(1)为整型int
print(type(1,))
#dict
dict={"a":1,"b":3,"c":5}
for i in dict:
print(i,dict[i])
for i in dict.items():
print(i[0])
print(i[1])
r=sorted(dict.items(),key=lambda i:i[0],reverse=True)
print(r)
a 1
b 3
c 5
a
1
b
3
c
5
[('c', 5), ('b', 3), ('a', 1)]
对于逻辑判断,bool类型非零即真。
dict:字典
get() 函数返回指定键的值,如果值不在字典中返回默认值。
numpy
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
a[0,1]=2
pandas
matplotlib画图
import matplotlib.pyplot as plt
#中文显示乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
#保存高清图片
#bbox_inches='tight'表示指定将图表多余的空白区域裁减掉
plt.savefig('实体个数.jpg',dpi=300)#指定像素
如果plt.show() 在plt.savefig()前,就会导致保存图片是空白的情况。
ps:
py文件-右键open in terminal
导包alt+enter+shift
self–相当于指定类里的一个全局变量
整体缩进 tab
取消整体缩进 shift+tab
替换ctrl+r