迁徙进修循序渐进指南 — 应用示例进行情感分析
在这个示例中共有72篇影评。
风格转移
62篇不包含明白的情感,将用于对模型进行预练习
8篇包含明白的情感,将用于对模型进行练习
2篇包含明白的情感,将用于对模型进行测试
因为只有8个包含标签的句子(包含明白缙?的句子),是以起首可以预练习模型进行高低文猜测。如不雅只应用这8个句子练习模型,精确度可达50%(如许的精确度和抛硬币差不多)。
我们将应用迁徙进修技巧解决这个问题,起首应用62个句子练习模型,随后应用第一个模型的部分内容,以此为基本练习出一个情感分类器。应用随后8个句子进行练习后,用最后2个句子测试获得了100%的精确度。
第1步
我们将练习一个对词语之间的关系进行建模的收集。将句子中包含的一个词语传递进去,尝尝试猜测该词语涌如今同一个句子中。鄙人列代码中嵌入的矩阵其大年夜小为vocabulary x embedding_size,个中存储了代表每个词语的向量(这里的大年夜小为“4”)。
我们持续对这个图表进行练习,让雷同高低文中出现的词语可以获得类似的向量表征。我们会对这些句子进行预处理,移除所有停用词(Stop word)并实现标记化(Tokenizing)。随后一次传递一个词语,尽量缩短该词语向量与周边词语之间的距离,并扩大年夜与高低文不包含的随机词语之间的距离。
with tf.Session(graph=graph) as session: init.run() average_loss = 0 for step in range(10001): batch_inputs, batch_labels = generate_batch(batch_size, num_skips, skip_window) feed_dict = {train_inputs: batch_inputs, train_labels: batch_labels} _, loss_val, normalized_embeddings_np = session.run([optimizer, loss, normalized_embeddings], feed_dict=feed_dict) average_loss += loss_val final_embeddings = normalized_embeddings.eval()
training_the_pretrained_model.py托管于GitHub,可查看源文件
第3步
随后我们会试着猜测句子的情感。今朝已经有10个(8个练习用,2个测试用)句子带有正面和负面的标签。因为上一步获得的模型已经包含赶紧有词语中习得的向量,并且这些向量的数值属性可以代表词语的高低文,借此可进一步简化情感的猜测。
此时我们并不直接应用句子,而是将句子的向量设置为所含全部词语的平均值(这一义务实际上是经由过程类似LSTM的技巧实现的)。句子向量将作为输入传递到收集中,输出结不雅为内容为正面或负面的分数。我们用到了一个隐蔽的中心层,并经由过程带有标签的句子对模型进行练习。如你所见,固然每次只是用了10个样本,但这个模型实现了100%的精确度。
input = tf.placeholder(<span class="hljs-string"><span class="hljs-string">"float"</span></span>, shape=[<span class="hljs-keyword">None</span>, x_size])y = tf.placeholder(<span class="hljs-string"><span class="hljs-string">"float"</span></span>, shape=[<span class="hljs-keyword">None</span>, y_size])w_1 = tf.Variable(tf.random_normal((x_size, h_size), stddev=<span class="hljs-number"><span class="hljs-number">0.1</span></span>))w_2 = tf.Variable(tf.random_normal((h_size, y_size), stddev=<span class="hljs-number"><span class="hljs-number">0.1</span></span>))h = tf.nn.sigmoid(tf.matmul(X, w_1))yhat = tf.matmul(h, w_2)predict = tf.argmax(yhat, dimension=<span class="hljs-number"><span class="hljs-number">1</span></span>)cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(yhat, y))updates = tf.train.GradientDescentOptimizer(<span class="hljs-number"><span class="hljs-number">0.01</span></span>).minimize(cost)sess = tf.InteractiveSession()init = tf.initialize_all_variables()sess.run(init)<span class="hljs-keyword"><span class="hljs-keyword">for</span></span> epoch <span class="hljs-keyword"><span class="hljs-keyword">in</span></span> range(<span class="hljs-number"><span class="hljs-number">1000</span></span>): <span class="hljs-keyword"><span class="hljs-keyword">for</span></span> i <span class="hljs-keyword"><span class="hljs-keyword">in</span></span> range(len(train_X)): sess.run(updates, feed_dict={<span class="hljs-string">X:</span> train_X[<span class="hljs-string">i:</span> i + <span class="hljs-number"><span class="hljs-number">1</span></span>], <span class="hljs-string">y:</span> train_y[<span class="hljs-string">i:</span> i + <span class="hljs-number"><span class="hljs-number">1</span></span>]}) train_accuracy = numpy.mean(numpy.argmax(train_y, axis=<span class="hljs-number"><span class="hljs-number">1</span></span>) == sess.run(predict, feed_dict={<span class="hljs-string">X:</span> train_X, <span class="hljs-string">y:</span> train_y})) test_accuracy = numpy.mean(numpy.argmax(test_y, axis=<span class="hljs-number"><span class="hljs-number">1</span></span>) == sess.run(predict, feed_dict={<span class="hljs-string">X:</span> test_X, <span class="hljs-string">y:</span> test_y})) print(<span class="hljs-string"><span class="hljs-string">"Epoch = %d, train accuracy=%.2f%%, test accuracy=%.2f%%"</span></span> % (epoch+<span class="hljs-number"><span class="hljs-number">1</span></span>,<span class="hljs-number"><span class="hljs-number">100.</span></span>*train_accuracy,<span class="hljs-number"><span class="hljs-number">100.</span></span>* test_accuracy))
推荐阅读
Firefox 说要默认启用多过程(内部称为 e10s-multi 项目)似乎已经说了良久。据 Firefox 的开辟人员 Eric Rahm 称,该架构筹划于下一? 54 版本启用,届时最多可以应用四个过程来治理 Web >>>详细阅读
本文标题:迁移学习:数据不足时如何深度学习
地址:http://www.17bianji.com/lsqh/35283.html
1/2 1