吴恩达深度学习 | (28) 序列模型专项课程第三周编程作业

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

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

目录

1.实验综述

2.加载必要的包

3.把人类可读日期转换为机器可读日期

4.神经机器翻译(with Attention)

5.可视化Attention

6.总结


1.实验综述

2.加载必要的包

from keras.layers import Bidirectional, Concatenate, Permute, Dot, Input, LSTM, Multiply
from keras.layers import RepeatVector, Dense, Activation, Lambda
from keras.optimizers import Adam
from keras.utils import to_categorical
from keras.models import load_model, Model
import keras.backend as K
import numpy as np

#!pip install faker #安装faker
from faker import Faker
import random
from tqdm import tqdm
from babel.dates import format_date
from nmt_utils import * #./nmt_utils.py
import matplotlib.pyplot as plt
%matplotlib inline

3.把人类可读日期转换为机器可读日期

  • 数据集

我们将在一个包含10000个人类可读日期及其对应的标准机器可读日期的数据集上训练我们的模型。接下里加载数据集并打印一些样本。

m = 10000
dataset,human_vocab,machine_vocab,inv_machine_vocab = load_dataset(m)
print(dataset[:10]) #打印前10个样本
print(human_vocab)
print(inv_machine_vocab)
print(machine_vocab)

查看头文件中的load_dataset()及其相关函数:

# 定义生成日期数据的格式
FORMATS = ['short',
           'medium',
           'long',
           'full',
           'full',
           'full',
           'full',
           'full',
           'full',
           'full',
           'full',
           'full',
           'full',
           'd MMM YYY', 
           'd MMMM YYY',
           'dd MMM YYY',
           'd MMM, YYY',
           'd MMMM, YYY',
           'dd, MMM YYY',
           'd MM YY',
           'd MMMM YYY',
           'MMMM d YYY',
           'MMMM d, YYY',
           'dd.MM.YY']

# 如果想生成其他语言的日期 可以修改这里
LOCALES = ['en_US']

def load_date():
    """
        加载一些假的日期
        :returns: 元组,包括人类可读日期,机器可读日期和数据对象。
    """
    dt = fake.date_object()

    try:
        human_readable = format_date(dt, format=random.choice(FORMATS),  locale='en_US') # locale=random.choice(LOCALES)) 生成一些人类可读的随机格式的日期
        human_readable = human_readable.lower() #日期小写化
        human_readable = human_readable.replace(',','') #将日期中的,替换为''
        machine_readable = dt.isoformat() #生成对应的机器可读日期
        
    except AttributeError as e:
        return None, None, None

    return human_readable, machine_readable, dt

def load_dataset(m):
    """
        加载包含m个样本和词的数据集
        m: 生成样本的数量
    """
    
    human_vocab = set() #集合 人类可读日期  
    machine_vocab = set() #集合 机器可读日期
    dataset = [] #数据集
    Tx = 30
    

    for i in tqdm(range(m)): #生成m对数据
        h, m, _ = load_date() #得到一对人类可读日期和机器可读日期
        if h is not None:
            dataset.append((h, m)) #添加到数据集列表中
            human_vocab.update(tuple(h))#将人类可读日期转换为元组 加到人类可读日期集合中
            machine_vocab.update(tuple(m))#将机器可读日期转换为元组 加到机器可读日期集合中
    
    human = d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值