代码解析:
这个函数将一个原始数据list转换为多个批次的数据,即[batch_len, batch_size, num_steps]。
起首,法度榜样每一次取了num_steps个词作为一个句子,即x,以这num_steps个词后面的一个词作为它的下一?猜测,即为y。如许,我们起首把原始数据整顿成了batch_len * batch_size个x和y的表示,类似于已知x求y的分类问题。
为了知足随机梯度降低的须要,我们还须要把数据整顿成一个个小的批次,每次胃荷琐批次的数据给TensorFlow来更新权重,如许,数据就整顿为[batch_len, batch_size, num_steps]的格局。
打印部分数据:
输出:
- train_data, valid_data, test_data, words, word_to_id = ptb_raw_data('simple-examples/data')
- x_train, y_train = ptb_producer(train_data)
- print(x_train.shape)
- print(y_train.shape)
可见我们获得了14524个批次的数据,每个批次的练习集维度为[64, 20]。
- (14524, 64, 20)
- (14524, 64)
第100个批次的第3句话为:
- print(' '.join(to_words(x_train[100, 3], words)))
- despite steady sales growth <eos> magna recently cut its quarterly dividend in half and the company 's class a shares
它的下一?词为:
- print(words[np.argmax(y_train[100, 3])])
构建模型 设备项
- the
攫取输入 让模许可以按批次的攫取数据。
- class LMConfig(object):
- """language model 设备项"""
- batch_size = 64 # 每一批数据的大年夜小
- num_steps = 20 # 每一个句子的长度
- stride = 3 # 取数据时的步长
- embedding_dim = 64 # 词向量维度
- hidden_dim = 128 # RNN隐蔽层维度
- num_layers = 2 # RNN层数
- learning_rate = 0.05 # 进修率
- dropout = 0.2 # 每一层后的丢弃概率
- class PTBInput(object):
- """按批次攫取数据"""
- def __init__(self, config, data):
- self.batch_size = config.batch_size
- self.num_steps = config.num_steps
- self.vocab_size = config.vocab_size # 词汇表大年夜小
- self.input_data, self.targets = ptb_producer(data,
- self.batch_size, self.num_steps)
推荐阅读
应用网格搜刮或随机搜刮或设备文件来调剂超参数 不要手动检查所有的参数,如许耗时并且低效。我平日对所有参数应用全局设备,检查运行结不雅之后,我拒绝一步研究改进的偏向。如不雅这种办法没有赞助,那么你可以应>>>详细阅读
地址:http://www.17bianji.com/lsqh/36985.html
1/2 1