pytorch学习随笔记录二——遇到的未知函数记录

numpy数组维度互换函数swapaxes

由于本次写的程序需要将数据数组除了batch之外,每次需要二次分组。所以处理数据维度又多了一层,但是经常需要变换两个分组的维度。此处用到swapaxes函数。数组是numpy库的。

num = np.random.random((2,3,4))
print(num)
num = np.swapaxes(num,0,2)
print(num)

# [[[0.0372153  0.56444485 0.30521904 0.10190487]
#   [0.88590199 0.05494382 0.92141733 0.45761658]
#  [0.67246559 0.20745557 0.24289462 0.52821502]]
# 
# [[0.91978977 0.00412304 0.58665158 0.53105978]
#  [0.59273119 0.09831343 0.07644877 0.12664533]
# [0.24492794 0.59717912 0.47824424 0.19823922]]]
# [[[0.0372153  0.91978977]
#   [0.88590199 0.59273119]
#  [0.67246559 0.24492794]]
# 
# [[0.56444485 0.00412304]
#  [0.05494382 0.09831343]
# [0.20745557 0.59717912]]
# 
# [[0.30521904 0.58665158]
#  [0.92141733 0.07644877]
# [0.24289462 0.47824424]]
# 
# [[0.10190487 0.53105978]
#  [0.45761658 0.12664533]
# [0.52821502 0.19823922]]]

从历程可以看出,函数可以实现数组或者矩阵任意两个维度互换。
下面这个函数是pytorch的多个维度互换函数permute
其参数值为原维度,参数位置为改变后维度。

import torch 

num = torch.rand(2,3,4)
print(num.size())
print(num)
num = num.permut(1,2,0)
print(num.size())
print(num)

# Size([2, 3, 4])
# tensor([[[0.1333, 0.8830, 0.8496, 0.3784],
         # [0.4283, 0.0245, 0.6624, 0.3985],
         # [0.8402, 0.8040, 0.5102, 0.0581]],

        # [[0.6492, 0.2072, 0.9122, 0.4166],
         # [0.3939, 0.8211, 0.9439, 0.8549],
         # [0.9574, 0.7813, 0.1646, 0.6591]]])
# torch.Size([3, 4, 2])
# tensor([[[0.1333, 0.6492],
         # [0.8830, 0.2072],
         # [0.8496, 0.9122],
         # [0.3784, 0.4166]],

        # [[0.4283, 0.3939],
         # [0.0245, 0.8211],
         # [0.6624, 0.9439],
         # [0.3985, 0.8549]],

        # [[0.8402, 0.9574],
         # [0.8040, 0.7813],
         # [0.5102, 0.1646],
         # [0.0581, 0.6591]]])

训练集随机打乱顺序函数

permutation和shuffle的区别是前者生成新数组,后者对原数组进行操作,无返回值。

permutation

Reference:https://blog.csdn.net/Song_Lynn/article/details/82817647

# train_X:3列, train_y
per = np.random.permutation(train_X.shape[0])		#打乱后的行号
new_train_X = train_X[per, :, :]		#获取打乱后的训练数据
new_train_y = trainy[per]

shuffle

https://blog.csdn.net/lyy14011305/article/details/76207327/

a = np.arange(12)
print a
np.random.shuffle(a)
print a
print 
a = np.arange(12)
print a
b = np.random.permutation(a)
print b
print a

随机数固定函数——seed

Reference:https://blog.csdn.net/weixin_41571493/article/details/80549833

import numpy as np

np.random.seed(0)
np.random.rand(4,3)
Out[362]: 
array([[0.5488135 , 0.71518937, 0.60276338],
       [0.54488318, 0.4236548 , 0.64589411],
       [0.43758721, 0.891773  , 0.96366276],
       [0.38344152, 0.79172504, 0.52889492]])
np.random.seed(0)
np.random.rand(4,3)
Out[364]: 
array([[0.5488135 , 0.71518937, 0.60276338],
       [0.54488318, 0.4236548 , 0.64589411],
       [0.43758721, 0.891773  , 0.96366276],
       [0.38344152, 0.79172504, 0.52889492]])

这个函数我测试过,在程序开头加入后,只要seed的参数不变,这个程序多次运行的随机数一致,注释后,随机数改变,再次加入后,只要参数不变,随机数结果依旧与之前的一致
这里猜测这个seed其实本身就是随机数的种子,只要种子不变,指定函数产生的随机数就是固定的。

绘图相关问题总结

同时打开多个绘图窗口

https://blog.csdn.net/wonengguwozai/article/details/79686062
了解到plt还有两种模型,通过ion()和ioff()进行切换。只有在ion()模式下,程序才会继续运行,在ioff()下才能保留窗口持续显示。

    import matplotlib.pyplot as plt
    plt.ion()    # 打开交互模式
    # 同时打开两个窗口显示图片
    plt.figure()  #图片一
    plt.imshow(i1)
    plt.figure()    #图片二
    plt.imshow(i2)
    # 显示前关掉交互模式
    plt.ioff()
    plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值