关于Theano扫描的一些问题

时间:2016-10-08 07:28:44

标签: python deep-learning theano

我对theano扫描机制有点困惑,这里有一个简单的代码片段来计算A ^ k

<div class="rightpan" id='printablediv'>
<p>Print Content</p>
<input type='button' id="cmd" value="Download" class="button1 sbtbutton" />
<div>
<div style="display: none;" id="editor"></div>


<script src="http://code.jquery.com/jquery-2.1.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script>

<script>
    var element = $("#printablediv"); // global variable
var getCanvas; // global variable

$("#cmd").on('click', function () {

    html2canvas(element, {
        onrendered: function (canvas) {
            $("#editor").append(canvas);
            getCanvas = canvas;

            var img = canvas.toDataURL("image/png"),
            doc = new jsPDF({
                unit: 'px',
                format: 'a4'
            });
            doc.addImage(img, 'JPEG', 20, 20);
            doc.save('Vistordetails.pdf');
            form.width(cache_width);
        }
    });
});

我在扫描功能中设置了打印(&#34;测试&#34;),因为n_steps是5,重复功能应该被调用5次,我首先想到的是&#34;测试&#34;字符串应该打印5次。

但是,如下面的输出所示,&#34; test&#34;字符串只输出1次。

git add -u

所以,有点困惑,因为递归函数被称为多次(n_steps)次,为什么&#34;测试&#34;字符串只输出一次?

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

我不会太深刻。

theano的机制是它为计算过程建立一个图表,并根据图表以复杂的方式进行数学计算,我们不必关心。这就是theano可以计算梯度的原因,因为它之前对计算过程建模。

关于这一点,在theano.scan(fn = xxx,)中,通过扫描你的fn,你告诉theano 如何构建图形而不是做什么这个循环

Theano将根据你的fn构建图形,但它将以自己的方式计算它,而不是使用你的代码。

所以这就是结论:你的代码只在扫描试图构建图形时使用一次,然后它被丢弃,这就解释了为什么你的“测试”只出现了。

我希望这会有所帮助。

这是我创建的一个演示来解释,如果你喜欢,你可以尝试阅读它。我来自中国,希望我的英语不会让你感到不安。

https://gist.github.com/NickQianFeng/9b91f2ecaa4f7e5ddb89d1b50cac1576

相关问题