动手学深度学习Task1-Task2

  • Task1-Task2
    • Task1 环境配置
      • 我在学习环境配置中出现的问题与解决方法
      • 环境配置的过程
    • Task2
      • 数据操作
      • 数据预处理
      • 线代
      • 矩阵计算
      • 自动求导

@pytorch深度学习预备知识

Task1-Task2

大家好!这是我在CSDN上的,**[第一篇]**文章,很激动,很高兴,因为深度学习我是第一次上手学习实操,CSDN这种写文章的方式也是我第一次上手学习实践。毫无疑问,CSDN将是我学习深度学习的过程中的一位重要伙伴,因为我要将每次刚刚学习过的知识在这里梳理一遍:不仅仅是机械式的记录,是复习,是将输入到脑海中的信息的再整理。

Task1 环境配置

我在学习环境配置中出现的问题与解决方法

环境配置其实算是课程里第一个要动手实操的地方,尽管老师讲得很好(非常的细节,发音非常清晰),这依旧不妨碍问题制造机——我,在听课的过程中生产问题:

  1. 时间紧张,看不上直播,打卡更紧张,往往听课的时候已经大半夜了,整个人迷迷瞪瞪,然后就会导致第二个问题↓;
  2. 又瞌睡,又在计算机方面的基础知识薄弱,很多代码看不懂,跟着做都做乱了,输出结果和老师不!一!样!(崩溃ing),出不来还继续尝试,渴望用同一个错误的句子得到一个可以正确的奇迹。

遇到问题怎么办?先拿出手机拍(开)个抖(玩)音(笑):

  1. 时间是海绵,挤一挤总是有的。
  2. 来瓶可乐清醒一下(不适合喝可乐的除外)。
  3. 书读百遍其义自见。既然出错了,一定是有原因的,倒回去找你需要的那个part,反复看,反复试。
  4. 如果第三步依旧有问题你不如听老师的话:打开百度搜一搜。
  5. 实在用代码行下载不下来的话就去网页下载吧,以后再解决这个问题。

环境配置的过程

因为我这边台式机里是Windows,所以我这边主要学习的是骆秀韬老师讲解的部分。

  1. 下载安装miniconda
    找到Miniconda的下载地址,并且选择Miniconda3 Winidows 64 bit进行下载

    或者搜索清华大学tuna镜像站下载(搜索conda→点击问号→下拉找到miniconda下载的地方→找到带有latest的最新数据进行下载)
    安装的时候只有clear cache需要注意勾选一下,其他无脑确认就okk。
  2. 更换镜像源


    这一部分应该也没有什么问题,照做即可。PyPI找列表里名为Pypi-packages的选项,复制→粘贴到anaconda powershell prompt里就ok。
  3. 安装Git

    Git这个是纯纯的无脑安装,一路确定下去,肥肠的方便。
    老师教了如何用git下载github里的资源,我成功了一个,另一个不知道为何一直失败,暂时先直接点击下载了。
  4. 课程环境搭建
    直接上命令行:
conda create -n d2l python=3.9

然后:输入y→输入conda activate d2l,进入d2l环境~~

tips
①输入conda deactivate回到basic环境,注意,这条命令行没有"d2l"了!我一开始因为困顿卡了在这里卡了两次退不出来)
②删除环境用:conda remove -n d2l – all (然后输入y)

  1. Pip安装
    如下,让可爱的老师出个镜。直接装所有库就ok!

    Task1到此结束(撒花✿✿ヽ(°▽°)ノ✿)

Task2

数学一直都不好,但是我有一颗上进的❤(o(╥﹏╥)o)。
这一份task一共包括5个小节:数据操作、数据预处理、线代、矩阵计算、自动求导。

数据操作

深夜来到了我们的B站大学进行数据操作学习。
这一节有一个非常基础与重要的tip:N维数组是机器学习与神经网络的主要数据结构

这里老师先对以下三个方面进行了简单讲解:

  • 0d(标量)、1d(特征向量)、2d(特征矩阵)、3d、4d、5d;
  • 创建数组:需求:形状+元素数据类型+元素的值;
  • 访问元素:单个/一行/一列/子区域元素的访问。

在jupyter中进行实操中,对以下部分进行了学习(代码已列好,可以进行修改,ctrl+enter执行,空格下一页):

  1. import the PyTorch library
    import torch

  2. tensor(A tensor represents a (possibly multi-dimensional) array of numerical values)
    x = torch.arange(12, dtype=torch.float32)
    x

  3. access a tensor’s shape
    x.shape

  4. access a tensor’s numel
    x.numel()

  5. Change the shape of a tensor without altering its size or values
    X = x.reshape(3, 4)
    X

  6. construct a tensor with all elements set to zero or one
    torch.zeros((2, 3, 4))
    torch.ones((2, 3, 4))

  7. Sample each element randomly (and independently)
    torch.randn(3, 4)

  8. Supplying the exact values for each element
    torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])

  9. Add, subtract, multiply, divide, and power
    x = torch.tensor([1.0, 2, 4, 8])
    y = torch.tensor([2, 2, 2, 2])
    x + y, x - y, x * y, x / y, x ** y

  10. concatenate multiple tensors together
    X = torch.arange(12, dtype=torch.float32).reshape((3,4))
    Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
    torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)

  11. Construct a binary tensor via logical statements
    X == Y

  12. Summing all the elements in the tensor
    X.sum()

  13. Perform elementwise binary operations by invoking the broadcasting mechanism
    a = torch.arange(3).reshape((3, 1))
    b = torch.arange(2).reshape((1, 2))
    a, b
    a+b
    (这里其实我想问问所以广播机制存在的理由是什么)

  14. [-1] selects the last row and [1:3] selects the second and third rows
    X[-1], X[1:3]

  15. write elements of a matrix by specifying indices
    X[1, 2] = 17
    X

  16. To assign multiple elements the same value
    X[:2, :] = 12
    X

  17. Running operations can cause new memory to be allocated to host results
    before = id(Y)
    Y = Y + X
    id(Y) == before

  18. Performing in-place operations
    Z = torch.zeros_like(Y)
    print(‘id(Z):’, id(Z))
    Z[:] = X + Y
    print(‘id(Z):’, id(Z))

  19. Converting to a NumPy tensor (ndarray)
    A = X.numpy()
    B = torch.from_numpy(A)
    type(A), type(B)

  20. Convert a size-1 tensor to a Python scalar
    a = torch.tensor([3.5])
    a, a.item(), float(a), int(a)

数据预处理

  1. 创建数据集,并存储在CSV文件中
    (老师和)代码如下:
  2. 从创建的csv文件中加载原始数据集(如果没有pandas要先下载pandas~)
    import pandas as pd
    data = pd.read_csv(data_file)
    print(data)
  3. 处理丢失的数据,方法有2种:插值 or删除
    Replace the NaN entries with the mean value of the corresponding column:
    inputs = inputs.fillna(inputs.mean())
    print(inputs)
    For categorical input fields, we can treat NaN as a category:
    inputs, targets = data.iloc[:, 0:2], data.iloc[:, 2]
    inputs = pd.get_dummies(inputs, dummy_na=True)
    print(inputs)
    All the entries in inputs and targets are numerical, we can load them into a tensor
    import torch
    X, y = torch.tensor(inputs.values), torch.tensor(targets.values)
    X, y

线代

学习路线图:线性代数

Task1-Task2相关推荐

  1. python queue 多进程_python中的Queue与多进程(multiprocessing)

    最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程 一.先说说Queue(队列对象) Queue是python中的标准库,可以 ...

  2. springMvc+mybatis+spring 整合 包涵整合activiti 基于maven

    2019独角兽企业重金招聘Python工程师标准>>> 最近自己独立弄一个activiti项目,写一下整合过程: 环境:jdk1.7 tomcat7.0 maven3.5  ecli ...

  3. NLP这两年:15个预训练模型对比分析与剖析

    作者 | JayLou 来源 | 知乎 前言 在之前写过的<NLP的游戏规则从此改写?从word2vec, ELMo到BERT>一文中,介绍了从word2vec到ELMo再到BERT的发展 ...

  4. Spring Boot 中使用@Async实现异步调用,加速任务执行!

    欢迎关注方志朋的博客,回复"666"获面试宝典 什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照 ...

  5. ConcurrentDictionary线程不安全么,你难道没疑惑,你难道弄懂了么?

    前言 事情不太多时,会时不时去看项目中同事写的代码可以作个参考或者学习,个人觉得只有这样才能走的更远,抱着一副老子天下第一的态度最终只能是井底之蛙.前两篇写到关于断点传续的文章,还有一篇还未写出,后续 ...

  6. 后BERT时代:15个预训练模型对比分析与关键点探索(附链接)

    来源:知乎 作者:JayLou 本文约7800字,建议阅读10分钟. 本文对ELMo以来的15个代表性的预训练语言模型进行了多维度的对比和分析. 前言 在之前写过的<NLP的游戏规则从此改写?从 ...

  7. Callable、Future和FutureTask

    2019独角兽企业重金招聘Python工程师标准>>> 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任 ...

  8. Concurrency 学习 (Mac iphone)

    Concurrency是ios4.0和macosx10.6引入的一个新的东西 根据我的学习和了解Concurrency就是为了更好的使用多核CPU,在单核下使用thread就可以, 但是在多核下使用t ...

  9. 多线程编程学习笔记——async和await(三)

    接上文 多线程编程学习笔记--async和await(一) 接上文 多线程编程学习笔记--async和await(二) 五.   处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...

  10. java中setid(),Java Process.setId方法代碼示例

    本文整理匯總了Java中org.activiti.bpmn.model.Process.setId方法的典型用法代碼示例.如果您正苦於以下問題:Java Process.setId方法的具體用法?Ja ...

最新文章

  1. 计算机的五大主要应用领域是电大,电大计算机应用基础考答案
  2. leetcode前缀树java_LeetCode 实现 Trie (前缀树)
  3. 一秒搭建gitbook
  4. (转)看盘ABC:看盘七大指标
  5. 搭建 OpenStack 实验环境 - 每天5分钟玩转 OpenStack(16)
  6. 认知觉醒是成长的首因,送3本硬核认知提升书
  7. 总结30个CSS3选择器(转载)
  8. Java 读取 INI 配置文件的方法
  9. 敏感词过滤算法DFA
  10. 我的新书《Android App开发从入门到精通》终于出版啦
  11. 联想小新Pad救砖(9008刷机)
  12. C#汉字转拼音(支持多音字)
  13. 鸿蒙818工艺,荣耀智慧屏系列发布:鸿鹄818芯片+首款鸿鹄系统产品,未来家庭中心已来,3799元起售...
  14. 激光投影仪和大屏液晶电视有哪些优缺点?二者应该怎么选?
  15. outlook邮箱撤回邮件
  16. flutter 修改iOS app图标 名称
  17. 根据硬件ID查看摄像头型号方案,可查任何一款摄像头芯片来源
  18. win7降低屏幕亮度_Win7电脑屏幕亮度怎么调?Win7调节屏幕亮度的步骤
  19. 计算机视觉论文-2021-06-24
  20. IDEA官方有中文版啦

热门文章

  1. Xshell登录阿里云服务器ECS
  2. php读取id卡,门禁系统
  3. 企业员工计算机基础知识培训心得,计算机员工培训总结
  4. PIC16F887 单片机 电容测量 程序
  5. 毕业设计 嵌入式 RFID智能门禁系统
  6. 免费在线markdown转pdf
  7. js打开服务器pdf文件,iOS使用pdf.js打开PDF文件
  8. 利用计算机打开电视盒子,创维盒子教您如何使用计算机连电视?
  9. 并联机器人招标_2019年机器人并联市场何去何从
  10. 异构网络环境matlab搭建代码,异构接入matlab