python – 嵌入在tensorflow中做了什么
我正在阅读这里使用带有张量流的RNN的示例:
ptb_word_lm.py
我无法弄清楚嵌入和embedding_lookup在这里做了什么.它如何为张量添加另一个维度?从(20,25)到(20,25,200).在这种情况下(20,25)是20的批量大小,具有25个时间步长.我不明白为什么/为什么你可以添加单元格的hidden_??size作为输入数据的维度?通常,输入数据将是大小为[batch_size,num_features]的矩阵,并且模型将映射num_features —> hidden_??dims,其大小为[num_features,hidden_??dims]矩阵,产生的大小为[batch-size,hidden-dims].那么hidden_??dims如何成为输入张量的维度呢? input_data,targets = reader.ptb_producer(train_data,20,25) cell = tf.nn.rnn_cell.BasicLSTMCell(200,forget_bias=1.0,state_is_tuple=True) initial_state = cell.zero_state(20,tf.float32) embedding = tf.get_variable("embedding",[10000,200],dtype=tf.float32) inputs = tf.nn.embedding_lookup(embedding,input_data) input_data_train # <tf.Tensor 'PTBProducer/Slice:0' shape=(20,25) dtype=int32> inputs # <tf.Tensor 'embedding_lookup:0' shape=(20,200) dtype=float32> outputs = [] state = initial_state for time_step in range(25): if time_step > 0: tf.get_variable_scope().reuse_variables() cell_output,state = cell(inputs[:,time_step,:],state) outputs.append(cell_output) output = tf.reshape(tf.concat(1,outputs),[-1,200]) outputs # list of 20: <tf.Tensor 'BasicLSTMCell/mul_2:0' shape=(20,200) dtype=float32> output # <tf.Tensor 'Reshape_2:0' shape=(500,200) dtype=float32> softmax_w = tf.get_variable("softmax_w",[config.hidden_size,config.vocab_size],dtype=tf.float32) softmax_b = tf.get_variable("softmax_b",dtype=tf.float32) logits = tf.matmul(output,softmax_w) + softmax_b loss = tf.nn.seq2seq.sequence_loss_by_example([logits],[tf.reshape(targets,[-1])],[tf.ones([20*25],dtype=tf.float32)]) cost = tf.reduce_sum(loss) / batch_size 解决方法
好吧,我不打算尝试解释这个特定的代码,但我会尝试回答“什么是嵌入?”标题的一部分.
基本上,它是将原始输入数据映射到一组实值维度中,并且组织这些维度中的原始输入数据的“位置”以改进任务. 在tensorflow中,如果你想象一些文本输入字段有“王”,“女王”,“女孩”,“男孩”,你有2个嵌入维度.希望backprop能够训练嵌入,将版税的概念放在一个轴上,将性别放在另一个轴上.因此,在这种情况下,4分类值特征被“煮沸”到具有2维的浮点嵌入特征. 它们使用查找表实现,可以从原始列表或字典顺序进行哈希处理.对于一个训练有素的人,你可能会输入“女王”,然后你说出[1.0,1.0],输入“男孩”然后你得到[0.0,0.0]. Tensorflow会在错误INTO这个查找表中做出反馈,并希望从随机初始化的字典开始逐渐变得像我们在上面看到的那样. 希望这可以帮助.如果没有,请查看:http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |