python备忘

pytorch

tensor

  • 创建tensor
# torch.tensor(...)
box_feat = torch.tensor(data, dtype=None, device=None, requires_grad=False)

# torch.tensor.repeat(dim)
CFBank = torch.tensor([]).repeat(20,0)
# 此时,CFBank = tensor( [], size=(20,0) )

stack相当于增加维数,cat相当于增加某个维度的数量
# torch.stack()
torch.stack(([],[]), dim=0)
# 返回的结果是 tensor([], size=(2,1,0))
# torch.cat()
torch.cat([],[]), dim=0)
# 返回的结果是 tensor([], size=(2,0))
  • tensor 属性:
# tensor 大小
box_feat.size()

# tensor 所在设备
box_feat.device
# tensor 是否在GPU上
box_feat.is_cuda 

函数

python中**表示的意思

参考https://www.cnblogs.com/blogst/p/10965722.html
**表示python中的意思

表示python中的电源操作传递参数和定义参数时(所谓的参数是调用函数时传入的参数,参数是定义函数时定义函数的参数),还可以使用两个特殊语法:“*”。

调用函数时使用***

test(*args)*的功能实际上是将序列args中的每个飞鲸网元素作为位置参数传入。例如,如果args等于(1,2,3),则此代码等同于test(1,2,3)。

test(**kwargs)**的功能是将字典kwargs转换为关键字参数。例如,如果kwargs等于a’:1,‘b’:2,‘c’:3,则此代码等同于测试(a=1,b=2,c=3)。

定义函数参数时使用***

DEF测试(*args):

…定义函数参数时,*的含义不同,*args表示所有传入位置参数都包含在tuple args中。例如,如果在上面的函数中调用test(1,2,3),args的值是(1,2,3)。:

DEF测试(**kwargs):

…同样,**用于关键字参数和字典。调用test(a=1,b=2,c=3),kwargs的值为a’:1,‘b’:2,‘c’:3。

普通的参数定义和传递与可以和平共存,但显然必须放在所有位置参数的末尾,*必须放在所有关键字参数的末尾,否则会产生歧义。

数组

切片

二维list切片

list不能直接对第二维进行切片如:

# 这样是错误的
lis = [[1,1,1],[2,2,2]]
lis = lis[:][1:3]

但是可以这样操作:

lis = [li[1:3] for li in lis]

[-1] [:-1] [::-1] [2::-1]

import numpy as np
a=np.random.rand(5)
print(a)
[1    2    3    4    5]
 
print(a[-1]) ###取最后一个元素
[5]
 
print(a[:-1])  ### 除了最后一个取全部
[1    2    3    4]
 
print(a[::-1]) ### 取从后向前(相反)的元素
[5    4    3    2    1]
 
print(a[2::-1]) ### 取从下标为2的元素翻转读取
[3    2    1]

numpy

squeeze

从数组的形状中删除单维度条目,即把shape中为1的维度去掉

 1)a表示输入的数组;
 2)axis用于指定需要删除的维度,但是指定的维度必须为单维度,否则将会报错;
 3)axis的取值可为None 或 int 或 tuple of ints, 可选。若axis为空,则删除所有单维度的条目;
 4)返回值:数组
 5) 不会修改原数组;
>>> a = e.reshape(1,1,10)
>>> a
array([[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]])
>>> np.squeeze(a)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

pickle:‘ascii’ codec can’t decode byte 0xef in position 0:

这个是编码的问题,比如可能是当时保存pkl文件混合使用编码方式
如果网上的解决方式不适用,可以尝试:

data = pickle.load(fid, encoding = 'latin')

数字字符串补零

# 123~000123
s_exp = '123'
s_zfill = s_exp.zfill(6)

tensorboard:本机访问服务器docker容器中的tfboard

参考:https://www.cnblogs.com/marsggbo/p/13677839.html

  • 在建立容器的时候为tfboard留出端口映射
docker run ... -p 6006:6666 ...
  • 在容器中开启tfboard服务,因为容器中可能没有将tensorboard写入path路径,需要手动进入tensorboard路径运行:tensorboard/main.py开启服务
tensorboard --logdir ./path/to/your_files --port 6006
# or
python .../tensorboard/main.py --logdir ./path/to/your_files --port 6006

如果不能成功连接的话,加入参数–bind_all 让tfboard的端口暴露给网络而不是仅连接在localhost上

  • 在本机cmd使用ssh -L命令连接到服务器的映射端口
ssh -L 6006:127.0.0.1:6666 root@66.66.66.66

这一步连到服务器本机,不需要连到容器内部

  • 使用chrome(ie,edge不行)打开对应地址 http://127.0.0.1:6006 查看tfboard

pip指令出现SyntaxError: invalid syntax的两种原因及解决方法

参考 https://www.1024sky.cn/blog/article/36216

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值