《动手学深度学习》Pytorch版学习笔记(二):Task05

课程背景

在疫情的影响下,不少学校已经做出了延迟开学的决定,:伯禹教育Datawhale和鲸科技牵头与多家AI企业合作,让在家的同学也能免费学习优质的付费课程,同时为学习者创建好的学习环境,提供就业绿色通道。

主修课程

《动手学深度学习》 代码讲解Pytorch版:该书是2019年国内最受欢迎的人工智能学习教材之一,是一本面向中文读者的能运行、可讨论的深度学习教科书,书籍作者之一亚马逊首席科学家李沐,毕业于上海交大。伯禹教育携手上海交通大学团队,基于此书籍,将其中的代码框架由MXNET迁移至PyTorch,并对这些代码制作了讲解视频。帮助大家边动手写代码边巩固理论知识,从原理到实践,上手深度学习。

1 任务

【第二次打卡】内容(2月15日-17日)
1.Task03:过拟合、欠拟合及其解决方案;梯度消失、梯度爆炸;循环神经网络进阶(1天)
2.Task04:机器翻译及相关技术;注意力机制与Seq2seq模型;Transformer(1天)
3.Task05:卷积神经网络基础;leNet;卷积神经网络进阶(1天)
打卡时间:【2020-02-15 08:00 -- 2020-02-17 22:00】
打卡链接:学习开始放出

2 循环神经网络基础

本节介绍循环神经网络,我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量 H ,用 Ht 表示 H 在时间步 t 的值。 Ht 的计算基于 Xt 和 Ht−1 ,可以认为 Ht 记录了到当前字符为止的序列信息,利用 Ht 对序列的下一个字符进行预测。

2.1 从零开始实现循环神经网络

import torch
import torch.nn as nn
import time
import math
import sys
sys.path.append("/home/kesci/input")
import d2l_jay9460 as d2l
(corpus_indices, char_to_idx, idx_to_char, vocab_size) = d2l.load_data_jay_lyrics()
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

#one-hot向量
def one_hot(x, n_class, dtype=torch.float32):
    result = torch.zeros(x.shape[0], n_class, dtype=dtype, device=x.device)  # shape: (n, n_class)
    result.scatter_(1, x.long().view(-1, 1), 1)  # result[i, x[i, 0]] = 1
    return result
    
x = torch.tensor([0, 2])
x_one_hot = one_hot(x, vocab_size)
print(x_one_hot)
print(x_one_hot.shape)
print(x_one_hot.sum(axis=1))

def to_onehot(X, n_class):
    return [one_hot(X[:, i], n_class) for i in range(X.shape[1])]

X = torch.arange(10).view(2, 5)
inputs = to_onehot(X, vocab_size)
print(len(inputs), inputs[0].shape)

#初始化模型参数
num_inputs, num_hiddens, num_outputs = vocab_size, 256, vocab_size
# num_inputs: d
# num_hiddens: h, 隐藏单元的个数是超参数
# num_outputs: q

def get_params():
    def _one(shape):
        param = torch.zeros(shape, device=device, dtype=torch.float32)
        nn.init.normal_(param, 0, 0.01)
        return torch.nn.Parameter(param)

    # 隐藏层参数
    W_xh = _one((num_inputs, num_hiddens))
    W_hh = _one((num_hiddens, num_hiddens))
    b_h 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值