如何用深度学习来写歌词(神经网络实现)

学习神经网络一段时间了,也写了些小项目,比如说chatbot,中英翻译…最近在网上看到深度学习来写歌词的,心血来潮于是便开始coding了。下面我将介绍一下整个过程吧(先贴上项目地址吧generate-lyrics-using-PyTorch,欢迎大家follow、fork哦,平时会和大家分享更多有意思的项目)

以下代码基于PyTorch实现,如果你没有了解过PyTorch请先学习PyTorch

一、循环神经网络(RNN)能创作歌词的原理

如果对RNN有了解,相信你肯定看过这幅图吧

多对多RNN

对于序列问题的建模,RNN引入了隐状态h(hidden state),h可以对序列形的数据提取特征,接着再转换为输出。
歌词向量化后输入x1, x2, …..xn,输出y1, y2, …yn。x和记忆单元预测输出y,随着不断学习预测效果会越来越好。以下的图可以很好的显示能RNN能写歌词的原因(图片来源于网络,侵立删)
这里写图片描述
训练到一定程度后,神经网络已经学到足够东西了。这时候你可以看到,当输入“如”时它会预测输出是“果”,输入“果”时预测输出为“不”…

二、数据准备

有点懒,没有时间去搜集歌词数据,所以用了别人实例的数据(【玩转数据系列十五】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码))如果有侵权,请告诉我哦!

三、代码实现

首先是数据处理,向量化,数据随机切割并封装用于训练

# -*- coding: utf-8 -*-
import string
import random
import torch
from torch.autograd import Variable
from config import *

class Lang(object):
    def __init__(self, filename):
        self.char2idx = {}
        self.idx2char = {}
        self.n_words = 0
        self.process(filename)

    def process(self, filename):
        with open(filename, 'r') as f:
            for line in f.readlines():
                words = set(line)
                comm =
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值