<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tensorflow on Lost Temple</title><link>https://cloudcold.ai/tags/tensorflow/</link><description>Recent content in Tensorflow on Lost Temple</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 15 Apr 2017 22:07:25 +0000</lastBuildDate><atom:link href="https://cloudcold.ai/tags/tensorflow/index.xml" rel="self" type="application/rss+xml"/><item><title>学习tensoflow小记</title><link>https://cloudcold.ai/posts/2017-04-15-%E5%AD%A6%E4%B9%A0tensoflow%E5%B0%8F%E8%AE%B0/</link><pubDate>Sat, 15 Apr 2017 22:07:25 +0000</pubDate><guid>https://cloudcold.ai/posts/2017-04-15-%E5%AD%A6%E4%B9%A0tensoflow%E5%B0%8F%E8%AE%B0/</guid><description>&lt;p&gt;​ 今天在家学习了下TensorFlow,虽然背后的数学知识浅薄, 但能感觉到, 好强大.再导入tensorflow包的时候,就已经有了一个默认的隐藏图.&lt;/p&gt;
&lt;p&gt;​	可以直接调用函数去查看.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; tensorflow &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; tf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;graph &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get_default_graph()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print graph
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[] &lt;span style="color:#75715e"&gt;# 会得到一个空的图&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个时候我们可以创建一个常量,如&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;_input &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;constant(&lt;span style="color:#ae81ff"&gt;1.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个常量会以一个节点的形式存在,也就是图里面的一个op,python的变量名_input间接引用这个op&lt;/p&gt;
&lt;p&gt;调用下面的函数得到op&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;op &lt;span style="color:#f92672"&gt;=&lt;/span&gt; graph&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get_operations()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print op
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果我们直接打印_input, 会得到一个shape(维度)为空的的32位的浮点型张量,这意味着什么呢?意味着只有一个数字.
那怎么才能打印出这个_input的值呢?&lt;/p&gt;
&lt;p&gt;我们就要创建一个会话使得图的ops能够被执行,而且明确要求&amp;quot;运行&amp;quot;这个_input.如:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sess &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Session()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print sess&lt;span style="color:#f92672"&gt;.&lt;/span&gt;run(_input)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;下面我在初级入门教程上学到了一个如何运用tensorflow寻找目标函数参数的方法.&lt;/p&gt;
&lt;p&gt;首先.我们的这个模型是线性回归的模型. 所以模型的参数定义如下,浮点型,初始值为0.3和-0.3&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;W &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Variable([&lt;span style="color:#ae81ff"&gt;.3&lt;/span&gt;],tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;float32) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;b &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Variable([&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;.3&lt;/span&gt;],tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;float32)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接着给x一个placeholder&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;placeholder(tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;float32)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 这样我们的简单的线性回归模型如下&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;linear_model &lt;span style="color:#f92672"&gt;=&lt;/span&gt; W &lt;span style="color:#f92672"&gt;*&lt;/span&gt; x &lt;span style="color:#f92672"&gt;+&lt;/span&gt; b 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后为了确认我们的模型与真实的数据集之间的差异,即系统误差. 所以我们需要一个loss function.如下&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-pytho" data-lang="pytho"&gt;y = tf.placeholder(tf.float32) # y占位符
loss = tf.reduce_sum(tf.square(linear_model - y)) #loss函数
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;我们的目标是就是尽可能的减少系统误差,让这个误差越小越好.,当然如果误差为负,就不是越小越好了.实际输出（linear_model）和期望输出（y）的平方差来定义误差的值。&lt;/p&gt;
&lt;p&gt;然后我们用优化器（optimizer）。使用梯度下降优化器使我们能够按照误差的导数（derivative）来更新权重,这里背后的原理—梯度下降, 我也是一知半解..&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;optimizer &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tf&lt;span style="color:#f92672"&gt;.&lt;/span&gt;train&lt;span style="color:#f92672"&gt;.&lt;/span&gt;GradientDescentOptimizer(&lt;span style="color:#ae81ff"&gt;0.01&lt;/span&gt;) &lt;span style="color:#75715e"&gt;#梯度下降&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;train &lt;span style="color:#f92672"&gt;=&lt;/span&gt; optimizer&lt;span style="color:#f92672"&gt;.&lt;/span&gt;minimize(loss) &lt;span style="color:#75715e"&gt;#loss最小化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接着我们建立我们的训练数据&lt;/p&gt;</description></item></channel></rss>