吴恩达深度学习 | (22) 序列模型专项课程第一周编程作业实验2

吴恩达深度学习专项课程的所有实验均采用iPython Notebooks实现,不熟悉的朋友可以提前使用一下Notebooks。

本次实验中我们将使用NumPy编写一个RNN模型,来构建一个字符级的语言模型,来生成恐龙的名字。

完整代码(中文翻译版带答案)

目录

1.实验综述

2.导入必要的包

3. 数据集和模型结构

4.模型的构建块

5.构建语言模型

6.结论


1.实验综述

 

2.导入必要的包

import numpy as np
import random
#utils.py中定义了本次实验所需要的辅助函数
#包括朴素RNN的前向/反向传播  和我们在上一个实验中实现的差不多
from utils import *

3. 数据集和模型结构

  • 数据集和预处理

查看dinos.txt:

每一行包含一个恐龙的名字。 

data = open('dinos.txt', 'r').read() #读取dinos.txt中的所有恐龙名字 read()逐字符读取 返回一个字符串
data= data.lower()#把所有名字转为小写
chars = list(set(data))#得到字符列表并去重  
print(chars)  #'a'-'z' '\n'  27个字符    
data_size, vocab_size = len(data), len(chars) 
print('There are %d total characters and %d unique characters in your data.' % (data_size, vocab_size))

  • 模型结构

 

4.模型的构建块

  • 梯度剪切

### GRADED FUNCTION: clip

def clip(gradients, maxValue):
    '''
    把每个梯度值剪切到 minimum 和 maximum之间.
    
    Arguments:
    gradients -- Python梯度字典 包含 "dWaa", "dWax", "dWya", "db", "dby"
    maxValue -- 每个大于maxValue或小于-maxValue的梯度值 被设置为该值 
    
    Returns: 
    gradients -- Python梯度字典 包含剪切后的切度
    '''
    
    #取出梯度字典中存储的梯度
    dWaa, dWax, dWya, db, dby = gradients['dWaa'], gradients['dWax'], gradients['dWya'], gradients['db'], gradients['dby']
   
   
    # 对每个梯度[dWax, dWaa, dWya, db, dby]进行剪切
    for gradient in [dWax, dWaa, dWya, db, dby]:
        #gradient[gradient>maxValue] = maxValue
        #gradient[gradient<-maxValue] = -maxValue
        np.clip(gradient,-maxValue,maxValue,out=gradient)
    
    
    gradients = {"dWaa": dWaa, "dWax": dWax, "dWya": dWya, "db": db, "dby": dby}
    
    return gradients
  • 采样
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值