10_week

第10教学周(11.1-11.7)

Papers

[A Graph Similarity for Deep Learning](./A Graph Similarity for Deep Learning.md)

Learning to See in the Dark(2018 CVPR)

[An Unsupervised Information-Theoretic Perceptual Quality Metric](./A Graph Similarity for Deep Learning.md)

Programs

  • 利用线性神经网络实现分类算法Fashion-Mnist ,采用PyTorch实现。
  • Kaggle 房价预测,K折交叉验证
  • K_means作业

Code

1.Leetcode刷题记录*(next->整理方法)下周计划15题

回溯问题,广度搜索

Tutorials

  1. 《动手学深度学习》 — 动手学深度学习 2.0.0-alpha2 documentation
    • 线性神经网络:Softmax 回归,用于分类,从零实现
    • 多层感知机:从零实现->pytorch 自带函数;欠拟合过拟合;权重衰减;Dropout;
    • 卷积神经网络:存储在不同GPU上的张量操作;从零实现卷积核与矩阵的卷积计算、多输入与多输出通道、池化层;LeNet、AlexNet

9.20-9.48 小木虫论坛,分享的资源可以关注。网络问题没有刷新出来。

-10.58Transformer 第一个采用完全基于自监督模式的线性翻译模型。代替了当前的网络?;Attention(Q,K,V)=softmax(…);dot-product attention 更快是因为采用了更加高级的优化矩阵?;transformer 采用了multi-head attention在三个方面:1.在“编码器-解码器注意”层中,查询来自前一个解码器层,并且存储键和值来自编码器的输出。 这允许每个解码器中的位置以处理输入序列中的所有位置。2.编码器中的每个位置都可以参与到编码器上一层中的所有位置?怎么理解?3.类似地,解码器中的自注意层允许解码器中的每个位置参与解码器中直到并包括该位置的所有位置。;Transduction 模型是什么?;

-12.00如何配conda环境?https://towardsdatascience.com/manage-your-python-virtual-environment-with-conda-a0d2934d5195 成功安装好transformers 但是在jupter notebook 里面无法导入。在终端可以导入,猜测是版本jupyter notebook里面的版本不一样。

12.00-13.35目前认知:弄懂环境和内核的关系。https://zhuanlan.zhihu.com/p/146785635Anaconda 环境就是一个目录,里面存放着Python的解释器和各种模块。内核是为jupyter notebook这个前端运行并检查用户代码的程序。

终端里面的python 能够导入transformers模块,jupyter notebook 却不能,然后这个环境下确实有transformers 的模块。说明上述两种情况下内核不一样?

修改了在/home/wenglean/anaconda3/envs/transformer/share/jupyter/kernels/python3/kernel.json路径下的kernels.json

将位置改为 “/home/wenglean/anaconda3/envs/transformer/bin/python”, 这就说明在启动环境transformer的时候就会用这个内核吗?可是在终端打印sys的时候是/home/wenglean/anaconda3/envs/transformer/bin/python

在jupyter notebook里打印sys.executable的时候却是/home/wenglean/anaconda3/bin/python

说明jupyter notebook 里的检查用户代码的程序不一样,这是问题所在,那如何修改呢?

!!!python -m ipykernel install --user

在transformer 的环境中执行上面的代码,然后再打开终端成功将内核修改。反思:之前执行的一句指令是知乎上的那句指令,可能是没有搞清楚换python的路径,因此出错。

https://jacobzhuo.blog.csdn.net/article/details/116376809?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link

但是遇到了新的问题,cannot import name ‘pipeline’ from ‘transformers’。我记得之前都能运行成功一次。

版本没有匹配,执行以下指令成功导入。

pip install transformers==2.5.0

然后又出现以下问题

ImportError: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html

依次输入以下命令行解决,能够成功运行,没有报错。

pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension

11.2号。又遇到类似的问题,在下面修改内核即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hkxgOG3p-1646793739277)(…\image\jupternotebook.png)]

11.23

又遇到了如上的问题,在终端和jupyter notebook 两个地方分别输入import sys sys.executable 查看所用内核

,发现不同,解释了为什么在终端就能import sklearn 在jupyter notebook 中不能导入。发现在jupyter notebook中用的是d2l的内核。然后我在终端执行了命令 python -m ipykernel install --user 重新启动jupyter notebook 成功。后面再运行d2l之前在d2l的环境下,估计也要执行命令python -m ipykernel install --user,才能改变。

-17.42画图像集

-20.52看往年的师兄师姐的资料,重点可以关注孙林杰、李清、童品模、李随城师兄的文档。

Transformer:RNN并行度是一个问题。需要等ht-1的处理,按照时序进行运算。

2.Backgound:为了减少时序计算,添加卷积神经网络, 问题:对于长的序列无法处理。优点:多输出通道。

Trans:可以一层就可以看到所有。

3.自注意力机制也有人已经提出了。

4.解码需要一个一个生成。自回归(auto-regressive)过去的输出也会当成下次的输入。

5.ResNet 输入输出需要一样大小,如果不一样还需要做投影。

???MLP

两个向量做内积,如果值越大,说明相似度越高。

11.2

21to do list 这周主要任务:实现几大基本网络结构by pytorch,程序,论文

8.14-10.45 使用softmax 将Fashion-MNIST的数据集分类。有了一个感性的认识,下一步应该继续研究其实现过程。函数之间的关系。

10.45-11.05 实现了用PyTorch自带的函数进行分类https://zhuanlan.zhihu.com/p/35709485 可以参考这篇加深印象。

  • 如何创建conda 环境?conda create --name yourEnv python=2.7
  • 查看环境列表:conda info --env

-11.24开始配环境,vid2vid

-11.53做题

12.24-leetcode

条件运算符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVlgdxBp-1646793739279)(E:/learncoding/learning_progress/image/条件运算.png)]

13.23 两数之和。

13.49:Remove Duplicates from Sorted Array II

-14.36 休息,看油管视频

多层感知机

notes:影响模型泛化的因素:1.可调整参数的数量(自由度),可调整参数的数量很大时,模型往往容易过拟合。2.参数采用的值。当权重的取值范围较大时,模型可能更容易过拟合。3.训练样本的数量,模型简单,但数据集只有一两个样本,容易过拟合。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。

验证集、训练集、测试集之间的区别

19.22-22.00过拟合 问题与模型复杂性,怎么去衡量复杂性?特征过多增加复杂性,如果直接丢弃特征工作过于生硬。探讨衡量模型复杂性,引入参数矩阵的范数的平方。

权重衰减,正则化。我们鼓励模型将其权重分散到许多特征中,而不是过于依赖少数潜在的虚假关联

目前研究网络泛化能力的方法,我们转向对实际工具的探究,这些工具倾向于经验上改进深层网络的泛化性。

好的预测模型:期待它能在看不见的数据上有很好的表现

经典泛化理论:缩小训练和测试性能之间的差距,应该以简单的模型为目标。简单的模型另个有用的角度是平滑性,函数不应该对输入的微小变化敏感。关注点来到向网络注入噪声。如何注入噪声?

droupout 中间激活值以丢弃概率p由随机变量h’替换

将某些节点的删除,输出层的计算不能过度依赖于h1,…h5的任何一个元素

初始化方案上面的推理仅仅触及了现代参数初始化方法的皮毛。深度学习框架通常实现十几种不同的启发式方法。此外,参数初始化一直是深度学习基础研究的热点领域。其中包括专门用于参数绑定(共享)、超分辨率、序列模型和其他情况的启发式算法。例如,Xiao等人演示了通过使用精心设计的初始化方法 [Xiao et al., 2018] ,可以无须结构上的技巧而训练10000层神经网络的可能性。

如果你对该主题感兴趣,我们建议你深入研究本模块的内容,阅读提出并分析每种启发式方法的论文,然后探索有关该主题的最新出版物。也许你会偶然发现甚至发明一个聪明的想法,并为深度学习框架提供一个实现。

梯度消失和梯度爆炸都是不期望发生的

需要打破参数所固有的对称性,如果隐藏层所有参数初始化为W=c,否则迭代无法打破对称性,dropout 正则化可以。

默认初始化,采用正态分布初始化权重值。Xavier初始化(difficult!!)

没有读论文,抄写多层感知机的实现代码,有了一定的感性认识。

体会:抄代码的时候可以从上往下写。从宏观的角度往具体的实现走,这样对理解有一定的帮助。

11.3

15 11.02-环境和分布偏移:根据测试集的准确度衡量,模型表现得非常出色,但是当数据分布突然改变时,模型在部署中会出现灾难性的失败。如何理解数据的分布?

在数据分布发生变化的情况下,模型是否能够很好的测量出预期的值。如在区分狗和猫的任务中,训练集给的是现实生活中的狗和猫,测试集要求对卡通的狗和猫进行区分

panda.dtypes ->panda.dtype 出错

18.15-19.55完成房价预测模型的编写,提交到kaggle上。

19.55- 深度学习计算:层和块(class)的概念、可以自己设置一些非标准的结构

5.2 19.55-21.00参数管理 如何查看每一层的参数,如何初始化,如何就共享参数

5.3延后初始化。没太懂在干什么

5.4自定义层暂时不看。

5.5读写文件,存储参数,然后在需要参数的时候,构建模型,导入参数。

全局解释器锁是什么?第一次在服务器上存储数据在GPU上!!nvidia-smi 查看GPU运行情况

-21.35

读论文-对1-2两个方向了如指掌,并且能够重复实验。markdown 来做笔记,12.9英寸平板

22.04-23.11 做leetcode题目

明天先读论文!读什么论文呢?

11.4-11.7

10.47-12.30 阅读论文

安装环境

查看cpu信息:-cat /proc/cpuinfo;https://www.jianshu.com/p/a0ab0ccb8051

14.20-15.44上采样upsample concat

上采样https://blog.csdn.net/g11d111/article/details/82855946

CNN上采样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQhOr7z1-1646793739280)(E:/learncoding/learning_progress/image/upsampling.png)]

15.47卷积神经网络

前面的模型将图像数据展平成一维向量忽略了每个图像的空间结构信息。

背景:如果在像素、数据集很大的情况下,全连接层会大大增加模型的复杂度。

不变形:设计一个检测器扫描图像,检测器将图像分割成多个区域,并未每个区域包含检测目标的可能性打分。

???限制多层感知机

卷积核convolution kernel/滤波器filter。但是当图像不满足平移不变时,模型可能难以拟合训练数据。

6.2图像卷积 卷基层实际上是互相关运算。

-16.16 实现两个二维卷积计算

在CNN中,对于某一层的任意元素 x ,其 感受野 (Receptive Field)是指在前向传播期间可能影响 x 计算的所有元素(来自所有先前层)。

为了避免丢失边界信息,填充,使得边缘也能做到卷积运算;为了解决原始输入分辨率十分冗余的问题,可以利用步幅来解决。

卷积神经网络中卷积核的高度和宽度通常为奇数,例如 1、3、5 或 7。

17.28-多输入通道和输出通道。在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。直观地说,我们可以将每个通道看作是对不同特征的响应。

11.6

目标:教材:->现代卷积;code:10题,paper:

8.09-8.30找论文-9.00

9.14-10.07 An Unsupervised Information-Theoretic Perceptual Quality Metric

pooling 池化层:降低卷积层对位置的敏感性???,同时降低对空间降采样表示的敏感性。

一种运算,也是利用窗口,遍历每个位置的输出,一般有最大汇聚层和平均汇聚层。

设置卷积层输入为 X,汇聚层输出为 Y。 无论 X[i, j]X[i, j + 1] 的值是否不同,或 X[i, j + 1]X[i, j + 2] 的值是否不同,汇聚层始终输出 Y[i, j] = 1。 也就是说,使用 2×2 最大汇聚层,即使在高度或宽度上移动一个元素,卷积层仍然可以识别到模式。(这个应该可以理解为降低对卷积层的位置的敏感性)

-11.30LeNet 搭建,-12.14AlexNet网络训练

-12.56 从前序与中序遍历构造二叉树,岛屿数量。数与序列,图(递归)

-13.25眼睛休息

(1h)所有组合:搜索算法,从所有解里找到符合条件的解法。深度优先;广度优先

电话号码的字母组合:如何构建键值对?

回溯问题:

result = []
def backtrack(路径, 选择列表):
    if 满足结束条件:
        result.add(路径)
        return
for 选择 in 选择列表:
    做选择
    backtrack(路径, 选择列表)
    撤销选择

-14.19回溯问题

-15.13 全排列问题,写函数参数的时候没写 &

15.30-15.58 单词搜索, 广度优先。回溯法,路径,选择列表。

中间休息。15.58-16.58 整理知乎收藏,没有干成什么事。

你可能感兴趣的:(深度学习,python,人工智能)