语言模型数据集(周杰伦专辑歌词) 讨论区


#1

http://zh.diveintodeeplearning.org/chapter_recurrent-neural-networks/lang-model-dataset.html


#2

红线部分我不懂为什么要batch_len-1,如果减1 我觉得结果就缺了一半,


但是我去掉减1运行代码就报错。
新手刚学习深度学习,想问问哪位小哥哥能解决一下我的疑问,我将万分的感谢。:blush:


#3

data_len 就是歌词的长度,你这是36,但是他的索引只到35。刚好你的num_step选择的是6, 36//6 = 6,在循环中当i =5,i = 56=30,输出Y时,i+num_step+1 =37,索引溢出了。而35//6 = 5, i在循环中当最大为4,i = 46=24,输出Y时,i+num_step+1 =31,索引不会溢出。
-1 就是为了避免溢出的情况,其实你这刚好赶巧了,现在提供的代码,不 -1 也不会有错。


#4

时隔这么久还是能秒懂,万分感谢.:blush:


#5

36 输出就4个样本? X:[3,4,5,6,7,8] Y[4,5,6,7,8,9,10] 这种不要了?


#6

X=[]
Y=[]
while i+1<len(corpus-num_step):
X.append(corpus[i:i+num_step])
Y.append(corpus[i+1:i+num_step+1])
i+=1
#生成batch
batch 不是在训练过程中直接指定的吗?
整个划分到训练奇奇怪怪


#7

char-level 的歌词生成方法,有什么方法可以改进吗?提高生成的歌词质量。


#8

还有一种随机小批量的方法就是两个序列可以前后错开一位,这样可以生成更多的随机样本
num_examples = len(corpus_indices) - num_steps - 1
epoch_size = num_examples // batch_size
example_indices = list(range(num_examples))
random.shuffle(example_indices)

def _data(pos):
    return corpus_indices[pos:pos + num_steps]

for i in range(0,epoch_size):
    i = i * batch_size
    batch_indices = example_indices[i:i + batch_size]
    X = [_data(j) for j in batch_indices]
    Y = [_data(j + 1) for j in batch_indices]
    yield nd.array(X,ctx),nd.array(Y,ctx)

#9

就是说我的的那种 也可以是吧 在随机batch的方法下


#10

这个看起来挺不错的,赞!

不过有没有谁能搞定序列样本是完整句子的方法?


#11

我最近在做,你可以参考后面章节情感分析那里,不过我没有看那个我是自己scratch的。