当前位置:   article > 正文

服务器杂记_iter(test_iter).next()

iter(test_iter).next()
  1. python可以定义class,而且不一定要有初始化函数init
  2. nn.Module是所有神经网络的基类,任何pytorch模型都应该继承于它
  3. 上游/下游任务:上游任务指对数据做预处理,如:分词、过滤、生成词向量等,上游任务的结果作为下游任务的输入;下游任务是你在什么数据集上干的什么事,比如做分类任务,问答任务
  4. lamuda是匿名函数,可快速实现功能
  5. *args是所有的参数列表,**kwargs是所有的变量参数字典
  6. linux服务器上plt.show()是不会显示图片的,可以在import plt之前加入
    import matplotlib as mpl mpl.use('Agg')
    然后用plt.savefig("test1_1.png") 保存为图片
  7. random.shuffle()用于将一个列表中的元素打乱顺序,值得注意的是使用这个方法不会生成新的列表,只是将原列表的次序打乱
  8. range(num)产生的是0到num-1的整数列表;range(start, stop[, step])的区间是[start,stop],步长是step
  9. pytorch里的tensor是多维数组,longtensor就是64位整数的多维数组
  10. python里a[1:3]就是输出a[1]和a[2]
  11. 矩阵MXN就是M行N列,是没有维数的。而数据维数的。
  12. 带yield的函数是个生成器,有个blog写的挺好的,详情见yield说明
  13. super(Net, self).init()就是Net类先调用一下Net类的父类的初始化函数
  14. nn.Linear(输入的个数,输出的个数,是否使用偏置) 就是做线性变换
  15. 可以用nn.Sequential来更加方便地搭建网络,Sequential是一个有序的容器,网络层将按照在传入Sequential的顺序依次被添加到网络中
# 写法一
net = nn.Sequential(
    nn.Linear(num_inputs, 1)
    # 此处还可以传入其他层
    )
# 写法二
net = nn.Sequential()
net.add_module('linear', nn.Linear(num_inputs, 1))
# net.add_module ......
# 写法三
from collections import OrderedDict
net = nn.Sequential(OrderedDict([
          ('linear', nn.Linear(num_inputs, 1))
          # ......
        ]))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. 定义优化算法
# 统一顶一个学习率
optimizer = optim.SGD(net.parameters(), lr=0.03)
# 对每个层都定义一个学习率
optimizer =optim.SGD([
                # 如果对某个参数不指定学习率,就使用最外层的默认学习率
                {'params': net.subnet1.parameters()}, # lr=0.03
                {'params': net.subnet2.parameters(), 'lr': 0.01}
            ], lr=0.03)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. pytorch中view的用法传送门
  2. plt的plot讲x和y对应起来,并绘图。plot是绘制折线图,scatter是散点图,bar是条形图,barh就会让柱状图横过来,hist是统计直方图,用法和参数都一样。
  3. python里[]是列表,()是元组,{}是字典
  4. numpy.array好像是个数组,这里的arange就是array(range())在这里插入图片描述
    type就是array的类型,array.dtype就是里面数据的类型。
    numpy里取几位小数就是array.round(几位)
  5. numpy数组的维数,一般不会超过三维在这里插入图片描述
  6. numpy的二维数组相加减乘除都是对应位置的数值进行加减乘除,如果形状不统一,则是小的数组一行一行或者一列列拿到大的数组里去计算。在这里插入图片描述在这里插入图片描述
  7. np的随机方法在这里插入图片描述比较特殊的是这个seed,每次都会生成同一组随机数
  8. np中常见的统计函数在这里插入图片描述
  9. pandas就是在np的基础上帮助处理非数值型的数据(np主要是针对数值型数据)。
  10. series是带索引的一维数组,dataframe是二维数组,是series容器。dataframe的行叫Index,列叫columns
  11. df的一些属性和函数在这里插入图片描述
  12. df取行或者列的注意事项在这里插入图片描述
  13. 服务器里可以更换python的版本,也就是类似conda install python=3.8.8
  14. python if里的变量在外部可见
  15. torch.init.normal_:给tensor初始化,一般是给网络中参数weight初始化,初始化参数值符合正态分布;torch.init.constant_:初始化参数使其为常值,即每个参数值都相同。一般是给网络中bias进行初始化
  16. iter(test_iter).next()就是迭代器的下一个项目
  17. python的print函数的正确写法
    print('epoch: %d, test_ acc: %.5f, train_l: %.5f, train_acc: %.5f' % (i + 1, test_acc_sum / n, train_l_sum / n, train_acc_sum / n))
  18. assert是断言,满足条件则继续,否则报错
  19. torch.matmul是高维的矩阵乘法
  20. isinstance判断两类是不是一种类型,而且子类也是父类的一种类型
  21. 如果用dropout时,在测试经度的时候要关掉dropout的功能,这一块的代码如下,感觉挺重要的:
    # 本函数已保存在d2lzh_pytorch def evaluate_accuracy(data_iter, net): acc_sum, n = 0.0, 0 for X, y in data_iter: if isinstance(net, torch.nn.Module): #如果net是继承nn.Moudel net.eval() # 评估模式, 这会关闭dropout acc_sum += (net(X).argmax(dim=1) == y).float().sum().item() net.train() # 改回训练模式 else: # 如果net是自定义的模型 if('is_training' in net.__code__.co_varnames): # 如果有is_training这个参数 # 将is_training设置成False acc_sum += (net(X, is_training=False).argmax(dim=1) == y).float().sum().item() else: acc_sum += (net(X).argmax(dim=1) == y).float().sum().item() n += y.shape[0] return acc_sum / n
  22. enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列
  23. GC含量愈高,DNA的密度也愈高,同时热及碱不易使之变性,因此利用这一特性便可进行DNA的分离或测定。Bio.SeqUtils.GC() 函数时会自动处理序列和可代表G或者C的歧意核苷酸 字母S混合的情况,如GC(my_seq)。
  24. python里[m::n]其中m是开始取的位置,n是步长。
  25. Biopython里的%s是字符串。
  26. str.join(sequence)将序列sequence中的元素以指定的字符str连接生成一个新的字符串
  27. BioPython里complement()和reverse_complement()很容易得到seq的互补序列和反向互补队列
  28. Biopython里的transcribe()是从编码链转录mRNA。back_transcribe()是从mRNA逆转录为DNA编码链。
  29. 可以由 coding_dna.translate(table=2, to_stop=True)将mRNA和DNA翻译成蛋白质,这个table是选择选择翻译表的,to_stop=True则可以翻译到第一个终止密码子就结束,否则全部翻译且用*分开。
  30. python代码过长可以用()或者 \ 分行
  31. condon是密码子的意思。
  32. Biopython里的seq对象都是只读的,如果想要可写,则要变成MutableSeq(mutable可变)对象。
  33. 终于明白为什么要用flatten层了,比如最开始输入的时候,为了把数据展开成一维,就可以变成向量输入了,降低维度。
  34. 以及softmax函数是平滑归一化指数函数,为了找出最大的那个数。
  35. json.dumps将一个Python数据结构转换为JSON
  36. re.compile ()是用来优化正则的,它将正则表达式转化为对象
  37. Path.mkdir用于创建文件夹
  38. 自定义tf.keras.callbacks.Callback:https://blog.csdn.net/frostime/article/details/105083151
  39. tf.reduce_mean是tf中算期望和均值的函数,可见blog
  40. nvidia-smi可以查看显存使用情况
  41. CUDA_VISIBLE_DEVICES=0 python train.py可以指定GPU跑代码
  42. tf按需分配内存超链接
  43. 运行代码可以翻页查看结果:python train.py | less,按上下键即可翻页,按q可退出
  44. 没有tf.log,只有tf.math.log
  45. tf里的计算,矩阵计算就得矩阵
  46. tf.reduce_mean不设置axis默认把所有数据求平均
  47. 导入上下级的包只需要在对应目录添加_init_.py空文件,自动识别为包
  48. python -m xx.xx.xxx命令,自动识别为模块并运行,后缀不能添加py
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/145473
推荐阅读
相关标签
  

闽ICP备14008679号