<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI on Yaohong</title><link>https://yh.timefriend.vip/categories/ai/</link><description>Recent content in AI on Yaohong</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 17 Nov 2021 20:27:20 +0800</lastBuildDate><atom:link href="https://yh.timefriend.vip/categories/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>How backward and step are associated with model paramters update?</title><link>https://yh.timefriend.vip/post/machinelearning/base/lossbackwardandopitimizerstep/</link><pubDate>Wed, 17 Nov 2021 20:27:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/lossbackwardandopitimizerstep/</guid><description>&lt;h1 id="how-are-backward-and-step-associated-with-model-paramters-update"&gt;How are backward and step associated with model paramters update?&lt;/h1&gt;&#10;&lt;p&gt;optimizer accept the paramters of the model, it can update the parameters, but how is loss function associated with paramters?&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;loss.backward()&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;optimizer.step()&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;REFERENCE:&lt;/p&gt;&#10;&lt;p&gt;1.&lt;a href="https://stackoverflow.com/questions/53975717/pytorch-connection-between-loss-backward-and-optimizer-step"&gt;pytorch - connection between loss.backward() and optimizer.step()&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;2.https://pytorch.org/tutorials/beginner/former_torchies/nnft_tutorial.html#forward-and-backward-function-hooks&lt;/p&gt;</description></item><item><title>nn_Module</title><link>https://yh.timefriend.vip/post/machinelearning/base/nn_module/</link><pubDate>Tue, 16 Nov 2021 20:27:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/nn_module/</guid><description>&lt;h1 id="nn_module"&gt;nn_Module&lt;/h1&gt;&#10;&lt;h2 id="1where-are-module-parameters-configured"&gt;1.Where are module parameters configured?&lt;/h2&gt;&#10;&lt;p&gt;The parameters are stored in the network node which is one of points of a network layer.&#10;Neural network layer is defined in &lt;code&gt;init&lt;/code&gt; method of module and need to be defined as class variable;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch.nn &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; nn&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;TorchDNN&lt;/span&gt;(nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Module):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;, hidden, output):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;super&lt;/span&gt;(TorchDNN, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;&lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; layer_hidden &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Linear(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;, hidden, bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_data):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;pass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array([&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;torch_model &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; TorchDNN(&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(x), &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(torch_model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;state_dict())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OUTPUT:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OrderedDict()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Network layer should be defined as a variable of &lt;code&gt;Module&lt;/code&gt; class;&lt;/p&gt;</description></item><item><title>Understanding arange, unsqueeze, repeat, stack methods in Pytorch</title><link>https://yh.timefriend.vip/post/machinelearning/base/understandingunsqueezerepeatstackmethodsinpytorch/</link><pubDate>Fri, 30 Jul 2021 20:26:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/understandingunsqueezerepeatstackmethodsinpytorch/</guid><description>&lt;h1 id="understanding-arange-unsqueeze-repeat-stack-methods-in-pytorch"&gt;Understanding arange, unsqueeze, repeat, stack methods in Pytorch&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;torch.arange(start=0, end, step=1)&lt;/code&gt; return 1-D tensor of size &lt;code&gt;(end-start)/step&lt;/code&gt; which value begin from start and each value take with common differences &lt;code&gt;step&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;torch.unsqueeze(input, dim)&lt;/code&gt; return a new tensor with a dimension of size one insterted at specified position; A dim value within the range &lt;code&gt;[-input.dim() - 1, input.dim() + 1)&lt;/code&gt; can be used.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;tensor.repeat(size*)&lt;/code&gt; return a tensor; the new shape of tensor is that original shape multiplied by &lt;code&gt;arguments&lt;/code&gt; correspondingly, if the number of paramter don&amp;rsquo;t match the original shape, then &lt;code&gt;last dimension of new shape = the last dimension of original shape * last paramter&lt;/code&gt;;&lt;/p&gt;</description></item><item><title>L1 L2 Regularization - Optimizer</title><link>https://yh.timefriend.vip/post/machinelearning/base/optimizer_l1l2regularization/</link><pubDate>Mon, 12 Jul 2021 20:26:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/optimizer_l1l2regularization/</guid><description>&lt;h1 id="optimizer-l1-l2-regularization"&gt;Optimizer: L1 L2 Regularization&lt;/h1&gt;&#10;&lt;p&gt;L1,L2 Loss function mean different type of loss function.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-language" data-lang="language"&gt;L1: sum(Y-f(x)) lasso&#10;L2: sum(Y-f(x))^2 Ridge&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;L1, L2 regularization :&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Y_predict = E(w_i(x_i)+b_i)&#10;&#10;MES = E(Y-Y_predict)^2&#10;&#10;L1: loss = MSE + 入E|w_i|&#10;L2: loss = MES + 入E(w_i)^2&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="what-does-penalize-the-weights"&gt;What does penalize the weights?&lt;/h2&gt;&#10;&lt;p&gt;It means add another parameters to the loss function, so that the greater the weight, the higher the loss function value. That makes the weight parameters to be less or smaller.&lt;/p&gt;</description></item><item><title>How to Label Voice with Praat for Machine Learning</title><link>https://yh.timefriend.vip/post/machinelearning/other/howtolabelvoicefordeeplearning/</link><pubDate>Sat, 10 Jul 2021 11:34:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/other/howtolabelvoicefordeeplearning/</guid><description>&lt;h1 id="how-to-label-voice-with-praat-for-machine-learning"&gt;How to Label Voice with Praat for Machine Learning&lt;/h1&gt;&#10;&lt;h2 id="1install"&gt;1.Install&lt;/h2&gt;&#10;&lt;h3 id="11-download-praat"&gt;1.1 Download praat&lt;/h3&gt;&#10;&lt;p&gt;1.Open &lt;a href="https://www.fon.hum.uva.nl/praat/"&gt;Praat: doing Phonetics by Computer&lt;/a&gt; website;&lt;/p&gt;&#10;&lt;p&gt;2.Choose your OS system on download area in the upper left conner of website;&lt;/p&gt;&#10;&lt;p&gt;3.Then click the &lt;code&gt;praat6150_mac.dmg&lt;/code&gt; or &lt;code&gt;praat6150_win64.zip&lt;/code&gt; to download file;&lt;/p&gt;&#10;&lt;p&gt;For example, my os is MacOS, in my case I should download &lt;code&gt;praat6150_mac.dmg&lt;/code&gt; and install it.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Option: You can also download the file from github, referce to &lt;a href="https://github.com/praat/praat/releases"&gt;Praat in github&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-install-phonetic-symbols"&gt;1.2 Install Phonetic symbols&lt;/h3&gt;&#10;&lt;p&gt;If you want to see good-quality phonetic characters on your screen and in your clipboard, you have to install the Charis SIL and/or the Doulos SIL font.&lt;/p&gt;</description></item><item><title>Anacode simple usage</title><link>https://yh.timefriend.vip/post/other/anacodesimpleusage/</link><pubDate>Sat, 26 Jun 2021 13:52:53 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/anacodesimpleusage/</guid><description>&lt;h1 id="anacode-simple-usage"&gt;Anacode simple usage&lt;/h1&gt;&#10;&lt;h2 id="11-download-and-install-mac-os"&gt;1.1 Download and install &amp;ndash;Mac os&lt;/h2&gt;&#10;&lt;p&gt;Download file: &lt;a href="https://www.anaconda.com/products/individual"&gt;click to download&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Install after download.&lt;/p&gt;&#10;&lt;p&gt;Run command in terminal to see your anconda version:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$conda&lt;/span&gt; -V&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda 4.10.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use &lt;code&gt;conda info&lt;/code&gt; to see conda configuration:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;base&lt;span style="color:#ff79c6"&gt;)&lt;/span&gt; $ conda info &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2anaconda-usage"&gt;2.Anaconda Usage&lt;/h2&gt;&#10;&lt;h3 id="21-list-all-enviroments"&gt;2.1 List all enviroments&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;base&lt;span style="color:#ff79c6"&gt;)&lt;/span&gt; $ conda info -e&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# conda environments:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;base /Users/Rhys/opt/anaconda3&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="21-create-an-enviroment"&gt;2.1 create an enviroment&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;base&lt;span style="color:#ff79c6"&gt;)&lt;/span&gt; $ conda create -n py36 &lt;span style="color:#8be9fd;font-style:italic"&gt;python&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;3.6&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="22-activate-an-enviroment"&gt;2.2 activate an enviroment&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;base&lt;span style="color:#ff79c6"&gt;)&lt;/span&gt; $ conda activate py36&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;py36&lt;span style="color:#ff79c6"&gt;)&lt;/span&gt; $ &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The environment had changed after activating;&lt;/p&gt;</description></item><item><title>Simple AI expert Enhanced Loop</title><link>https://yh.timefriend.vip/post/other/enhancedloop/</link><pubDate>Mon, 21 Jun 2021 21:19:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/enhancedloop/</guid><description>&lt;h1 id="simple-ai-expert-enhanced-loop"&gt;Simple AI expert Enhanced Loop&lt;/h1&gt;&#10;&lt;p&gt;Habit: Daily plan, weekly plan, month plan, 10 minute reading, Daily self-examination&lt;/p&gt;&#10;&lt;p&gt;Loop1: Assumption-&amp;gt;design a experiment-&amp;gt;do-&amp;gt;feedback-&amp;gt;conclusion&lt;/p&gt;&#10;&lt;p&gt;Loop2: Choose a subject-&amp;gt;Weekly Share to my classmates-&amp;gt;Feedback and update -&amp;gt; Make another share;&lt;/p&gt;</description></item><item><title>The Simple Implement of BatchNorm2D</title><link>https://yh.timefriend.vip/post/machinelearning/base/implementbatchnorm2d/</link><pubDate>Thu, 27 May 2021 12:30:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/implementbatchnorm2d/</guid><description>&lt;h1 id="the-simple-implement-of-batchnorm2d"&gt;The Simple Implement of BatchNorm2D&lt;/h1&gt;&#10;&lt;p&gt;The first is that instead of whiteningthe features in layer inputs and outputs jointly, we will normalize each scalar feature independently, by making ithave the mean of zero and the variance of 1. For a layer with d-dimensional inputx = (x(1). . . x(d)), we will nor-malize each dimension&lt;/p&gt;&#10;&lt;h2 id="1mybatchnorm2d"&gt;1.MyBatchNorm2D&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;MyBatchNorm2D&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;pass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, x):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(x);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mean &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;mean(x);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; standard_deviation &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sqrt(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;var(x) &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1e-05&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; x_norm &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (x &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; mean) &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; standard_deviation;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; x_norm;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [[[[ &lt;span style="color:#bd93f9"&gt;1.1713&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10.7508&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2.0155&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.5290&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.2751&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.0233&lt;/span&gt;]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.4446&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.8337&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.0429&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.8856&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;5.3324&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;7.6233&lt;/span&gt;]]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[[ &lt;span style="color:#bd93f9"&gt;2.1079&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.6039&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.8938&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.1655&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;8.0355&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.4911&lt;/span&gt;]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[ &lt;span style="color:#bd93f9"&gt;3.6337&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10.3400&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.5365&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.7931&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;0.8472&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.1318&lt;/span&gt;]]]];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; MyBatchNorm2D();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x_norm &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; bn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;forward(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;x_norm:&amp;#34;&lt;/span&gt;, x_norm);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;np.mean: &amp;#34;&lt;/span&gt;, np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;mean(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;)));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;np.var: &amp;#34;&lt;/span&gt; , np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;var(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;)));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;MyBatchNorm2D np.mean: &amp;#34;&lt;/span&gt;, np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;mean(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(x_norm)));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;MyBatchNorm2D np.var: &amp;#34;&lt;/span&gt; , np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;var(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(x_norm)));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OUTPUT:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# x_norm: [[[[ 0.0414345 -2.92181622]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.75064805 -0.38117689]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.31806977 0.00464894]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[-0.60875025 -0.4569104 ]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.50890728 -0.4698102 ]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 1.07568036 1.64508601]]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[[ 0.27422743 0.14895769]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.47184832 0.0399929 ]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 1.74753876 -0.3717568 ]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[ 0.65346666 2.3203247 ]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.63159209 -0.05256752]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.0391209 0.03161673]]]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# np.mean: 1.0045958333333334&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# np.var: 16.18707780123264&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# MyBatchNorm2D np.mean: 0.0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# MyBatchNorm2D np.var: 0.9999993822236513&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2using-batchnorm2d-in-torch"&gt;2.Using BatchNorm2d in torch&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [[[[ &lt;span style="color:#bd93f9"&gt;1.1713&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10.7508&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2.0155&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.5290&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.2751&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.0233&lt;/span&gt;]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.4446&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.8337&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.0429&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.8856&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;5.3324&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;7.6233&lt;/span&gt;]]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[[ &lt;span style="color:#bd93f9"&gt;2.1079&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.6039&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.8938&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.1655&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;8.0355&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.4911&lt;/span&gt;]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[ &lt;span style="color:#bd93f9"&gt;3.6337&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10.3400&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.5365&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.7931&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;0.8472&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.1318&lt;/span&gt;]]]];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch.nn &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; nn&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; torch&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;tensor(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BatchNorm2d(&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, momentum&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, affine&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;, track_running_stats&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x_norm &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; bn(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;BatchNorm2d new_x:&amp;#34;&lt;/span&gt;, x_norm);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;BatchNorm2d np.mean: &amp;#34;&lt;/span&gt; , np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;mean(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(x_norm)));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;BatchNorm2d np.var: &amp;#34;&lt;/span&gt; , np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;var(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(x_norm)));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OUTPUT:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# BatchNorm2d new_x: tensor([[[[ 0.2864, -2.6606],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.5013, -0.1339],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.0711, 0.2498]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[-0.9184, -0.7553],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.8112, -0.7692],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.8903, 1.5017]]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[[ 0.5179, 0.3933],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.2241, 0.2850],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 1.9831, -0.1245]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[ 0.4369, 2.2267],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.9429, -0.3212],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.3067, -0.2308]]]])&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# BatchNorm2d np.mean: -9.934108e-09&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# BatchNorm2d np.var: 0.99999934&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="reference"&gt;REFERENCE:&lt;/h1&gt;&#10;&lt;p&gt;1.&lt;a href="https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm2d.html"&gt;Torch nn.BatchNorm2d&lt;/a&gt;&lt;/p&gt;</description></item><item><title>model(x) vs model.forward(x)</title><link>https://yh.timefriend.vip/post/machinelearning/base/modelxvsforwardx/</link><pubDate>Mon, 24 May 2021 11:00:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/modelxvsforwardx/</guid><description>&lt;h1 id="modelx-vs-modelforwardx"&gt;model(x) vs model.forward(x)&lt;/h1&gt;&#10;&lt;p&gt;&lt;code&gt;__call__&lt;/code&gt; magic method in &lt;a href="https://stackoverflow.com/questions/54989230/calling-forward-function-without-forward/54989851#54989851"&gt;nn.Module&lt;/a&gt; will invoke &lt;code&gt;forward()&lt;/code&gt; method and take care of hooks and states that python allows, so we should use &lt;code&gt;model(x)&lt;/code&gt; rather than call &lt;code&gt;model.forward(x)&lt;/code&gt; directly.&lt;/p&gt;&#10;&lt;p&gt;REFERENCE:&lt;/p&gt;&#10;&lt;p&gt;1.&lt;a href="https://stackoverflow.com/questions/55338756/why-there-are-different-output-between-model-forwardinput-and-modelinput"&gt;Why there are different output between model.forward(input) and model(input)&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;2.&lt;a href="https://stackoverflow.com/questions/54989230/calling-forward-function-without-forward/54989851#54989851"&gt;Calling forward function without .forward()&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;3.&lt;a href="https://pytorch.org/docs/stable/_modules/torch/nn/modules/module.html#Module"&gt;torch.nn.module codes&lt;/a&gt;&lt;/p&gt;</description></item><item><title>DNN RNN CNN codes</title><link>https://yh.timefriend.vip/post/machinelearning/base/dnncnnrnn/</link><pubDate>Tue, 04 May 2021 08:27:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/dnncnnrnn/</guid><description>&lt;h1 id="simple-dnn-rnn-cnn-example-codes"&gt;Simple DNN RNN CNN example codes&lt;/h1&gt;&#10;&lt;h2 id="1dnn-deep-neural-network"&gt;1.DNN-Deep neural network&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;myDNN&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 3 * 5 * 2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;, hidden, output):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# hidden random weight &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# Note: hidden_weight can be the shape of (input,hidden); correspondingly, `self.hidden_out` should equal `np.dot(input_data, self.hidden_weight)` to accord with hidden_weight shape.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_weight &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rand(hidden, &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;); &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rand(hidden);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# hidden random weight &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_weight &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rand(output,hidden);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rand(output);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_data):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_out &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dot(input_data, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_weight&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T) &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_bias;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_out &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dot(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_out, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_weight&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T) &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_bias;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Usage:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dnn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; myDNN(&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;hidden_weight&amp;#34;&lt;/span&gt;,dnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_weight)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;hidden_bias:&amp;#34;&lt;/span&gt;,dnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_bias)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;output_weight&amp;#34;&lt;/span&gt;,dnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_weight)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;output_bias&amp;#34;&lt;/span&gt;,dnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_bias)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array([&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;]) &lt;span style="color:#6272a4"&gt;#inut&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;forward(x);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;output_out&amp;#34;&lt;/span&gt;,dnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_out)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# hidden_weight [[0.99663996 0.39342568 0.5312192 ]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [0.0798744 0.50312289 0.86241405]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [0.17138496 0.6761287 0.70645906]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [0.61662379 0.69389404 0.16623206]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [0.71213402 0.30800932 0.64149244]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# hidden_bias: [0.81517457 0.56115705 0.3089624 0.84450962 0.93530796]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output_weight [[0.34466034 0.31119367 0.12883636 0.34135026 0.43802589]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [0.31553914 0.16063241 0.8179255 0.52314575 0.79439618]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [0.86730239 0.25280671 0.20375421 0.78095429 0.67368635]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output_bias [0.5588883 0.98722366 0.21507382]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output_out [ 6.8078659 11.30086755 11.16252686]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="11-use-dnn-in-torch"&gt;1.1 Use DNN in torch&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch.nn &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; nn&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;TorchDNN&lt;/span&gt;(nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Module):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;, hidden, output):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;super&lt;/span&gt;(TorchDNN, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;&lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layer_hidden &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Linear(&lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;, hidden, bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layer_output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Linear(hidden, output, bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_data):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_out &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layer_hidden(input_data);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output_out &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layer_output(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_out);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array([&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;torch_model &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; TorchDNN(&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(x), &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(torch_model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;state_dict())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OrderedDict([(&amp;#39;layer_hidden.weight&amp;#39;, &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# tensor([[-0.5216, -0.5690, 0.4181],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.3142, 0.1489, 0.5071],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.0295, 0.3381, 0.4401],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.4697, 0.0732, -0.0328],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.5250, 0.1540, 0.2086]])), &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# (&amp;#39;layer_hidden.bias&amp;#39;, tensor([-0.5134, 0.2645, -0.3366, -0.0597, 0.0159])), &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# (&amp;#39;layer_output.weight&amp;#39;, &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# tensor([[ 0.2770, -0.3408, -0.3145, -0.3686, 0.1060],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.1268, 0.0729, -0.3838, 0.2850, 0.1438],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.1645, -0.0497, 0.1029, 0.1088, -0.0536]])), &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# (&amp;#39;layer_output.bias&amp;#39;, tensor([ 0.0908, -0.1240, 0.2800]))])&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2rnn-recurrent-neural-network"&gt;2.RNN-Recurrent neural network&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;myRNN&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;, hidden ):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# random weight&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;input_hidden_weight &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;randint(&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,(hidden, &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;))&lt;span style="color:#ff79c6"&gt;/&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_hidden_weight &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;randint(&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,(hidden))&lt;span style="color:#ff79c6"&gt;/&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# random bias&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;input_hidden_bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;randint(&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,(hidden))&lt;span style="color:#ff79c6"&gt;/&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_hidden_bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;randint(&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;,(hidden))&lt;span style="color:#ff79c6"&gt;/&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10000&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# self.input_hidden_bias = np.zeros(hidden);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# self.hidden_hidden_bias = np.zeros(hidden);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; hidden&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_data):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;last_hidden_output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;zeros([&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_size]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; item &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; input_data:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# ht​=tanh(W_ih​ * x_t​ + b_ih ​ + W_hh​*h_(t−1)​+b_hh​)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hidden_cur &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dot(item, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;input_hidden_weight&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T) &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;input_hidden_bias;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hidden_pre &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dot(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;last_hidden_output, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_hidden_weight&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T) &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;hidden_hidden_bias;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hidden_output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;tanh( hidden_cur &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; hidden_pre )&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; output&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(hidden_output)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;last_hidden_output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; hidden_output;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(output), hidden_output;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# diy_model = myRNN(w_ih, w_hh, hidden_size)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array([[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;6&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;7&lt;/span&gt;]]) &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;input_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hidden_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;diy_model &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; myRNN(input_size,hidden_size)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;output, hidden_output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; diy_model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;forward(x)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;myRNN process output: &amp;#34;&lt;/span&gt;, output)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;myRNN hidden_output:&amp;#34;&lt;/span&gt;, hidden_output)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# myRNN process output: [[-0.62745049 -0.99314575 -0.96754221 -0.9965258 ]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.99542912 -0.99962783 -0.99965698 -0.99998354]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.99983032 -0.99992543 -0.9999868 -0.99999971]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# myRNN hidden_output: [-0.99983032 -0.99992543 -0.9999868 -0.99999971]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="21-use-rnn-in-torch"&gt;2.1 Use RNN in torch&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch.nn &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; nn;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;TorchRNN&lt;/span&gt;(nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Module):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_size, hidden):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;super&lt;/span&gt;(TorchRNN,&lt;span style="font-style:italic"&gt;self&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;&lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layer &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;RNN(input_size, hidden, batch_first&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, x):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layer(x)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;torch_model &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; TorchRNN(&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(torch_model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;state_dict())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array([[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;6&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;7&lt;/span&gt;]]) &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;torch_x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; torch&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;FloatTensor([x])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;output, h &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; torch_model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;forward(torch_x)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;output:&amp;#34;&lt;/span&gt;, output&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detach()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;numpy())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;h:&amp;#34;&lt;/span&gt;,h&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detach()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;numpy())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output: &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OrderedDict([(&amp;#39;layer.weight_ih_l0&amp;#39;, tensor([[ 0.0922, 0.2786, -0.4514],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.3809, 0.2628, -0.4460],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.4951, -0.3599, -0.4961],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.3794, 0.3397, 0.3185]])), (&amp;#39;layer.weight_hh_l0&amp;#39;, tensor([[-0.1330, -0.1843, -0.2618, 0.4246],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.4154, -0.3578, -0.4181, -0.4291],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.3608, -0.2349, 0.4631, 0.4873],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.4886, 0.0285, -0.0490, 0.2928]])), (&amp;#39;layer.bias_ih_l0&amp;#39;, tensor([-0.1421, -0.3572, -0.2087, -0.0319])), (&amp;#39;layer.bias_hh_l0&amp;#39;, tensor([-0.3799, 0.1126, -0.1766, 0.2630]))])&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output: [[[-0.8416229 -0.589054 -0.99585485 0.9778193 ]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.45533973 -0.3993926 -0.9999862 0.99957436]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.6221984 0.05736368 -0.99999994 0.9999955 ]]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# h: [[[-0.6221984 0.05736368 -0.99999994 0.9999955 ]]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3cnn-convolutional-neural-network"&gt;3.CNN-Convolutional neural network&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;MyCNN&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# I don&amp;#39;t know how do filters work.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, in_channel, out_channel, kernel_size):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# random weight&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# (out_channel, in_channel, kernel_size, kernel_size)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# self.kernel_weight = np.random.randint(-10000,10000,(out_channel, in_channel, kernel_size, kernel_size))/10000;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;kernel_weight &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array([[[[ &lt;span style="color:#bd93f9"&gt;0.0106&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.1561&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0984&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;0.1468&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.1580&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.1404&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;0.0856&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0780&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0636&lt;/span&gt;]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.1620&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.2318&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0486&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.2214&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.2046&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.1070&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;0.1609&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0160&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.0374&lt;/span&gt;]]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[[ &lt;span style="color:#bd93f9"&gt;0.1876&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.2056&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.1858&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.1288&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0065&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.0145&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.1080&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.1519&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0581&lt;/span&gt;]],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.0749&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.2289&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.0890&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;0.0611&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0398&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.1293&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#bd93f9"&gt;0.0911&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.0264&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.2104&lt;/span&gt;]]]]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;in_channel &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; in_channel;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;out_channel &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; out_channel;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;kernel_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; kernel_size;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# c*h*w&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_data):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; input_shape &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; input_data&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; idx_start &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;floor( (&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;kernel_size)&lt;span style="color:#ff79c6"&gt;/&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)) ;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; width &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; input_shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; height &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; input_shape[&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; in_channel &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; input_shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; o_c &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;out_channel):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; piece_of_out_channel &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;zeros(( width&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;(idx_start&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;), height&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;(idx_start&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;) ));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# print(&amp;#34;piece_of_out_channel:&amp;#34;, piece_of_out_channel.shape)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# width&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; idx_height &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(idx_start, height &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; idx_start): &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# height&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; idx_width &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(idx_start, width &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; idx_start ):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# kernel_shape_input&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; kernel_shape_input &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; input_data[:, idx_height&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;idx_start: idx_height&lt;span style="color:#ff79c6"&gt;+&lt;/span&gt;idx_start&lt;span style="color:#ff79c6"&gt;+&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, idx_width&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;idx_start :idx_width&lt;span style="color:#ff79c6"&gt;+&lt;/span&gt;idx_start&lt;span style="color:#ff79c6"&gt;+&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt; ];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; out &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;kernel_weight[o_c] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; kernel_shape_input;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; out &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sum(out)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# assign value&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; idx_h &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; idx_height &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; idx_start;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; idx_w &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; idx_width &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; idx_start&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; piece_of_out_channel[idx_h][idx_w] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; out;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; output&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(piece_of_out_channel);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; output;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# x = np.random.randint(0,10000,(2, 6, 6))/100;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# x = random.astype(int)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array([[[&lt;span style="color:#bd93f9"&gt;61&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;93&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;18&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;31&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;49&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;12&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;62&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;32&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;60&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;58&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;30&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;49&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;64&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;38&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;74&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;59&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;29&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;71&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;34&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;29&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;88&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;59&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;41&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;91&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;72&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;36&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;94&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;79&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;29&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;17&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;15&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;86&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;29&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;84&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;53&lt;/span&gt;]]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[[&lt;span style="color:#bd93f9"&gt;31&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;25&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;15&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;16&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;35&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;20&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;76&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;45&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;82&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;88&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;49&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;99&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;56&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;46&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;82&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;72&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;26&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;55&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;7&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;86&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;32&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;29&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;82&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;91&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;76&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;68&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;17&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;50&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;19&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;53&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ,[&lt;span style="color:#bd93f9"&gt;87&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;21&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;58&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;35&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;81&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;46&lt;/span&gt;]]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# print(x);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;x.shape:&amp;#34;&lt;/span&gt;,x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;myCNN &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; MyCNN(x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;], &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(myCNN&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;kernel_weight)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; myCNN&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;forward(x)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;myCNN output:&amp;#34;&lt;/span&gt;,output)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# x.shape: (2, 6, 6)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# myCNN output: [array([[-2.5093, 9.0098, -0.2033, 28.9 ],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 6.5155, 27.3464, 0.7038, 14.5031],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [24.2218, 16.1092, 23.2223, 16.9067],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [29.6749, 2.0986, 16.8128, 45.025 ]]), &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# array([[-14.77 , -4.3335, 5.0665, 3.2378],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-28.2207, 18.1968, 11.889 , -27.3557],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ -2.748 , 22.5508, 10.6013, -19.0372],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 22.0148, 9.1788, -22.0313, 9.5176]])]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="31-use-cnn-in-torch"&gt;3.1 Use CNN in torch&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; torch.nn &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; nn;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;TorchCNN&lt;/span&gt;(nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Module):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, in_channel, out_channel, kernel_size ):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;super&lt;/span&gt;()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;&lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;conv2d &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; nn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Conv2d(in_channel, out_channel, kernel_size, bias&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;forward&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_data):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;conv2d(input_data);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;in_channel &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;torchcnn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; TorchCNN(in_channel, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;torchcnn weight:&amp;#34;&lt;/span&gt;, torchcnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;state_dict())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;torchcnn weight shape:&amp;#34;&lt;/span&gt;, torchcnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;state_dict()[&lt;span style="color:#f1fa8c"&gt;&amp;#39;conv2d.weight&amp;#39;&lt;/span&gt;]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;numpy()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# torchcnn weight shape: (2, 2, 3, 3) =&amp;gt; (out_channel, in_channel, kernel_size, kernel_size)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;torch_x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; torch&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;FloatTensor([x])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;out &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; torchcnn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;forward(torch_x);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;TorchCNN out: &amp;#34;&lt;/span&gt;, out)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# torchcnn weight: OrderedDict([(&amp;#39;conv2d.weight&amp;#39;, tensor(&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[[[ 0.0106, -0.1561, 0.0984],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.1468, 0.1580, -0.1404],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.0856, 0.0780, 0.0636]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[-0.1620, 0.2318, 0.0486],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.2214, -0.2046, 0.1070],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.1609, 0.0160, -0.0374]]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[[ 0.1876, -0.2056, 0.1858],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.1288, 0.0065, -0.0145],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-0.1080, 0.1519, 0.0581]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[-0.0749, 0.2289, -0.0890],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.0611, 0.0398, -0.1293],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 0.0911, -0.0264, -0.2104]]]]))])&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# TorchCNN out: tensor([[[[ -2.5066, 9.0144, -0.1983, 28.9003],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 6.5160, 27.3456, 0.7094, 14.5056],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 24.2262, 16.1086, 23.2279, 16.9102],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 29.6763, 2.1047, 16.8210, 45.0250]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [[-14.7564, -4.3273, 5.0752, 3.2491],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [-28.2115, 18.1981, 11.8975, -27.3447],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ -2.7442, 22.5540, 10.6096, -19.0247],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# [ 22.0166, 9.1837, -22.0241, 9.5211]]]],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# grad_fn=&amp;lt;MkldnnConvolutionBackward&amp;gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Use Opencv stitching_detailed To Stitch Segmentation image</title><link>https://yh.timefriend.vip/post/machinelearning/cv/useopencvstitching_detailedtostitchsegmentation/</link><pubDate>Thu, 29 Apr 2021 18:36:00 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/cv/useopencvstitching_detailedtostitchsegmentation/</guid><description>&lt;h1 id="use-opencv-stitching_detailed-to-stitch-segmentation-image"&gt;Use Opencv stitching_detailed To Stitch Segmentation image&lt;/h1&gt;&#10;&lt;p&gt;Environment:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;python version 3.7&#10;opencv-python version 4.5.1.48&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;1.Download &lt;a href="https://github.com/opencv/opencv/blob/master/samples/python/stitching_detailed.py"&gt;stitching_detailed&lt;/a&gt; file save it with file name &lt;code&gt;stitching_detailed.py&lt;/code&gt;;&lt;/p&gt;&#10;&lt;p&gt;2.Run the command;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$python.exe stitching_detailed.py image_1.png image_2.png image_3.png image_4.png image_5.png image_6.png image_7.png image_8.png image_9.png origin.png --features=brisk --matcher=affine&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note that: image &lt;code&gt;1~9&lt;/code&gt; is Segmentation images and &lt;code&gt;origin.png&lt;/code&gt; is a full picture.&lt;/p&gt;&#10;&lt;p&gt;REFERENCE:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/opencv/opencv/blob/master/samples/python/stitching_detailed.py"&gt;stitching_detailed&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;stitching_detailed.py&lt;/code&gt; source codes is follow:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;Stitching sample (advanced)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;===========================&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;Show how to use Stitcher API from python.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Python 2/3 compatibility&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; __future__ &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; print_function&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; argparse&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; collections &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; OrderedDict&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; cv2 &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; cv&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; np&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EXPOS_COMP_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OrderedDict()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EXPOS_COMP_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;gain_blocks&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_GAIN_BLOCKS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EXPOS_COMP_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;gain&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_GAIN&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EXPOS_COMP_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;channel&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_CHANNELS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EXPOS_COMP_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;channel_blocks&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_CHANNELS_BLOCKS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EXPOS_COMP_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;no&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_NO&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BA_COST_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OrderedDict()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BA_COST_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;ray&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_BundleAdjusterRay&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BA_COST_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;reproj&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_BundleAdjusterReproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BA_COST_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;affine&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_BundleAdjusterAffinePartial&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BA_COST_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;no&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_NoBundleAdjuster&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;FEATURES_FIND_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OrderedDict()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;xfeatures2d_SURF&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;create() &lt;span style="color:#6272a4"&gt;# check if the function can be called&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; FEATURES_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;surf&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;xfeatures2d_SURF&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;create&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; (AttributeError, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;SURF not available&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# if SURF not available, ORB is default&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;FEATURES_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;orb&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ORB&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;create&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; FEATURES_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;sift&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;xfeatures2d_SIFT&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;create&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; AttributeError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;SIFT not available&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; FEATURES_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;brisk&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BRISK_create&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; AttributeError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;BRISK not available&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; FEATURES_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;akaze&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;AKAZE_create&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; AttributeError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;AKAZE not available&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SEAM_FIND_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OrderedDict()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SEAM_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;gc_color&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_GraphCutSeamFinder(&lt;span style="color:#f1fa8c"&gt;&amp;#39;COST_COLOR&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SEAM_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;gc_colorgrad&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_GraphCutSeamFinder(&lt;span style="color:#f1fa8c"&gt;&amp;#39;COST_COLOR_GRAD&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SEAM_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;dp_color&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_DpSeamFinder(&lt;span style="color:#f1fa8c"&gt;&amp;#39;COLOR&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SEAM_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;dp_colorgrad&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_DpSeamFinder(&lt;span style="color:#f1fa8c"&gt;&amp;#39;COLOR_GRAD&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SEAM_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;voronoi&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;SeamFinder_createDefault(cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;SeamFinder_VORONOI_SEAM)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SEAM_FIND_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;no&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;SeamFinder_createDefault(cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;SeamFinder_NO)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ESTIMATOR_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OrderedDict()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ESTIMATOR_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;homography&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_HomographyBasedEstimator&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ESTIMATOR_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;affine&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_AffineBasedEstimator&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WARP_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;spherical&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;plane&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;affine&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;cylindrical&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;fisheye&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;stereographic&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;compressedPlaneA2B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;compressedPlaneA1.5B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;compressedPlanePortraitA2B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;compressedPlanePortraitA1.5B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;paniniA2B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;paniniA1.5B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;paniniPortraitA2B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;paniniPortraitA1.5B1&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;mercator&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;transverseMercator&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WAVE_CORRECT_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OrderedDict()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WAVE_CORRECT_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;horiz&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;WAVE_CORRECT_HORIZ&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WAVE_CORRECT_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;no&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WAVE_CORRECT_CHOICES[&lt;span style="color:#f1fa8c"&gt;&amp;#39;vert&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;WAVE_CORRECT_VERT&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BLEND_CHOICES &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (&lt;span style="color:#f1fa8c"&gt;&amp;#39;multiband&amp;#39;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;feather&amp;#39;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;no&amp;#39;&lt;/span&gt;,)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; argparse&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ArgumentParser(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; prog&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;stitching_detailed.py&amp;#34;&lt;/span&gt;, description&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Rotation model images stitcher&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;img_names&amp;#39;&lt;/span&gt;, nargs&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;+&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Files to stitch&amp;#34;&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--try_cuda&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Try to use CUDA. The default value is no. All default values are for CPU mode.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;bool&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;try_cuda&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--work_megapix&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.6&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Resolution for image registration step. The default is 0.6 Mpx&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;float&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;work_megapix&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--features&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(FEATURES_FIND_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Type of features used for images matching. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;.&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(FEATURES_FIND_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;FEATURES_FIND_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys(),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;features&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--matcher&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;homography&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Matcher used for pairwise image matching. The default is &amp;#39;homography&amp;#39;.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;homography&amp;#39;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;affine&amp;#39;&lt;/span&gt;),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;matcher&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--estimator&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(ESTIMATOR_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Type of estimator used for transformation estimation. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;.&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(ESTIMATOR_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;ESTIMATOR_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys(),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;estimator&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--match_conf&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Confidence for feature matching step. The default is 0.3 for ORB and 0.65 for other feature types.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;float&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;match_conf&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--conf_thresh&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.0&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Threshold for two images are from the same panorama confidence.The default is 1.0.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;float&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;conf_thresh&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--ba&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(BA_COST_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Bundle adjustment cost function. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;.&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(BA_COST_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;BA_COST_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys(),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;ba&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--ba_refine_mask&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;xxxxx&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Set refinement mask for bundle adjustment. It looks like &amp;#39;x_xxx&amp;#39;, &amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;where &amp;#39;x&amp;#39; means refine respective parameter and &amp;#39;_&amp;#39; means don&amp;#39;t refine, &amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;and has the following format:&amp;lt;fx&amp;gt;&amp;lt;skew&amp;gt;&amp;lt;ppx&amp;gt;&amp;lt;aspect&amp;gt;&amp;lt;ppy&amp;gt;. &amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;The default mask is &amp;#39;xxxxx&amp;#39;. &amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;If bundle adjustment doesn&amp;#39;t support estimation of selected parameter then &amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;the respective flag is ignored.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;ba_refine_mask&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--wave_correct&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(WAVE_CORRECT_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Perform wave effect correction. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(WAVE_CORRECT_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;WAVE_CORRECT_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys(),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;wave_correct&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--save_graph&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Save matches graph represented in DOT language to &amp;lt;file_name&amp;gt; file.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;save_graph&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--warp&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;WARP_CHOICES[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Warp surface type. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;.&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; WARP_CHOICES[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;WARP_CHOICES,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;warp&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--seam_megapix&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.1&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Resolution for seam estimation step. The default is 0.1 Mpx.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;float&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;seam_megapix&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--seam&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(SEAM_FIND_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Seam estimation method. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;.&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(SEAM_FIND_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;SEAM_FIND_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys(),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;seam&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--compose_megapix&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Resolution for compositing step. Use -1 for original resolution. The default is -1&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;float&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;compose_megapix&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--expos_comp&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(EXPOS_COMP_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Exposure compensation method. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;.&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;(EXPOS_COMP_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys())[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;EXPOS_COMP_CHOICES&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keys(),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;expos_comp&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--expos_comp_nr_feeds&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Number of exposure compensation feed.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int32, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;expos_comp_nr_feeds&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--expos_comp_nr_filtering&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Number of filtering iterations of the exposure compensation gains.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;float&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;expos_comp_nr_filtering&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--expos_comp_block_size&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;32&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;BLock size in pixels used by the exposure compensator. The default is 32.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int32, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;expos_comp_block_size&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--blend&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;BLEND_CHOICES[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Blending method. The default is &amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;.&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; BLEND_CHOICES[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;BLEND_CHOICES,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;blend&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--blend_strength&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Blending strength from [0,100] range. The default is 5&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int32, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;blend_strength&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--output&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;result.jpg&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;The default is &amp;#39;result.jpg&amp;#39;&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;output&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--timelapse&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Output warped images separately as frames of a time lapse movie, &amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;with &amp;#39;fixed_&amp;#39; prepended to input file names.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;timelapse&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;--rangewidth&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;store&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;uses range_width to limit number of images to match with.&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;, dest&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;rangewidth&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;__doc__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;format_help()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_matcher&lt;/span&gt;(args):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; try_cuda &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;try_cuda&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matcher_type &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;matcher&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;match_conf &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;features &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;orb&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; match_conf &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0.3&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; match_conf &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0.65&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; match_conf &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;match_conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; range_width &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rangewidth&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; matcher_type &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;affine&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matcher &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_AffineBestOf2NearestMatcher(&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;, try_cuda, match_conf)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; range_width &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matcher &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BestOf2NearestMatcher_create(try_cuda, match_conf)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matcher &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BestOf2NearestRangeMatcher_create(range_width, try_cuda, match_conf)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; matcher&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_compensator&lt;/span&gt;(args):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expos_comp_type &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; EXPOS_COMP_CHOICES[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;expos_comp]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expos_comp_nr_feeds &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;expos_comp_nr_feeds&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expos_comp_block_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;expos_comp_block_size&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# expos_comp_nr_filtering = args.expos_comp_nr_filtering&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; expos_comp_type &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_CHANNELS:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compensator &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_ChannelsCompensator(expos_comp_nr_feeds)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# compensator.setNrGainsFilteringIterations(expos_comp_nr_filtering)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; expos_comp_type &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_CHANNELS_BLOCKS:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compensator &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_BlocksChannelsCompensator(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expos_comp_block_size, expos_comp_block_size,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expos_comp_nr_feeds&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# compensator.setNrGainsFilteringIterations(expos_comp_nr_filtering)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compensator &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ExposureCompensator_createDefault(expos_comp_type)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; compensator&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;main&lt;/span&gt;():&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; args &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;parse_args()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_names &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;img_names&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(img_names)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; work_megapix &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;work_megapix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seam_megapix &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;seam_megapix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compose_megapix &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;compose_megapix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; conf_thresh &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;conf_thresh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ba_refine_mask &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ba_refine_mask&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; wave_correct &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; WAVE_CORRECT_CHOICES[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;wave_correct]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;save_graph &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; save_graph &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; save_graph &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warp_type &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;warp&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blend_type &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;blend&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blend_strength &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;blend_strength&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result_name &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;output&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;timelapse &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapse &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;timelapse &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;as_is&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapse_type &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Timelapser_AS_IS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;timelapse &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;crop&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapse_type &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Timelapser_CROP&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Bad timelapse method&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exit()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapse &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; finder &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; FEATURES_FIND_CHOICES[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;features]()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seam_work_aspect &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; full_img_sizes &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; features &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; images &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is_work_scale_set &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is_seam_scale_set &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is_compose_scale_set &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; name &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; img_names:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; full_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imread(cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;samples&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;findFile(name))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; full_img &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Cannot read image &amp;#34;&lt;/span&gt;, name)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exit()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; full_img_sizes&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append((full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;], full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; work_megapix &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; full_img&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; work_scale &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is_work_scale_set &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; is_work_scale_set &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; work_scale &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;min&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;1.0&lt;/span&gt;, np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sqrt(work_megapix &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1e6&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; (full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;])))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is_work_scale_set &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;resize(src&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;full_img, dsize&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, fx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;work_scale, fy&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;work_scale, interpolation&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_LINEAR_EXACT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; is_seam_scale_set &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seam_scale &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;min&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;1.0&lt;/span&gt;, np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sqrt(seam_megapix &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1e6&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; (full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;])))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seam_work_aspect &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; seam_scale &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; work_scale&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is_seam_scale_set &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_feat &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;computeImageFeatures2(finder, img)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; features&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(img_feat)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;resize(src&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;full_img, dsize&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, fx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;seam_scale, fy&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;seam_scale, interpolation&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_LINEAR_EXACT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; images&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(img)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matcher &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_matcher(args)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; matcher&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;apply2(features)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matcher&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;collectGarbage()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; save_graph:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;open&lt;/span&gt;(args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;save_graph, &lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; fh:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fh&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;write(cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;matchesGraphAsString(img_names, p, conf_thresh))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; indices &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;leaveBiggestComponent(features, p, conf_thresh)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_subset &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_names_subset &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; full_img_sizes_subset &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; i &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(indices)):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_names_subset&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(img_names[indices[i, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_subset&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(images[indices[i, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; full_img_sizes_subset&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(full_img_sizes[indices[i, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; images &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_subset&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_names &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_names_subset&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; full_img_sizes &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; full_img_sizes_subset&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; num_images &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_names)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; num_images &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Need more images&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exit()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; estimator &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ESTIMATOR_CHOICES[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;estimator]()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; b, cameras &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; estimator&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;apply(features, p, &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; b:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Homography estimation failed.&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exit()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; cam &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; cameras:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cam&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cam&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;astype(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;float32)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; adjuster &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; BA_COST_CHOICES[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ba]()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; adjuster&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setConfThresh(&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; refine_mask &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;zeros((&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;), np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;uint8)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; ba_refine_mask[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;x&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; refine_mask[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; ba_refine_mask[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;x&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; refine_mask[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; ba_refine_mask[&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;x&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; refine_mask[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; ba_refine_mask[&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;x&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; refine_mask[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; ba_refine_mask[&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;x&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; refine_mask[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; adjuster&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setRefinementMask(refine_mask)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; b, cameras &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; adjuster&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;apply(features, p, cameras)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; b:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Camera parameters adjusting failed.&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exit()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; focals &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; cam &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; cameras:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; focals&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(cam&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;focal)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; focals&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sort()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(focals) &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warped_image_scale &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; focals[&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(focals) &lt;span style="color:#ff79c6"&gt;//&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warped_image_scale &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (focals[&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(focals) &lt;span style="color:#ff79c6"&gt;//&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; focals[&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(focals) &lt;span style="color:#ff79c6"&gt;//&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]) &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; wave_correct &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rmats &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; cam &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; cameras:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rmats&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;copy(cam&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rmats &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;waveCorrect(rmats, wave_correct)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; idx, cam &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(cameras):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cam&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; rmats[idx]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; corners &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; masks_warped &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; images_warped &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sizes &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; masks &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; i &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, num_images):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; um &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;UMat(&lt;span style="color:#bd93f9"&gt;255&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ones((images[i]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;], images[i]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]), np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;uint8))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; masks&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(um)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warper &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;PyRotationWarper(warp_type, warped_image_scale &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; seam_work_aspect) &lt;span style="color:#6272a4"&gt;# warper could be nullptr?&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; idx &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, num_images):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; K &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cameras[idx]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;K()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;astype(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;float32)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; swa &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; seam_work_aspect&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; K[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; swa&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; K[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; swa&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; K[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; swa&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; K[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; swa&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; corner, image_wp &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; warper&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;warp(images[idx], K, cameras[idx]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_LINEAR, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BORDER_REFLECT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; corners&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(corner)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sizes&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append((image_wp&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;], image_wp&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; images_warped&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(image_wp)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p, mask_wp &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; warper&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;warp(masks[idx], K, cameras[idx]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_NEAREST, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BORDER_CONSTANT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; masks_warped&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(mask_wp&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; images_warped_f &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; img &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; images_warped:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; imgf &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;astype(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;float32)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; images_warped_f&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(imgf)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compensator &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_compensator(args)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compensator&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;feed(corners&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;corners, images&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;images_warped, masks&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;masks_warped)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seam_finder &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; SEAM_FIND_CHOICES[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;seam]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seam_finder&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;find(images_warped_f, corners, masks_warped)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compose_scale &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; corners &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sizes &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapser &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# https://github.com/opencv/opencv/blob/master/samples/cpp/stitching_detailed.cpp#L725 ?&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; idx, name &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(img_names):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; full_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imread(name)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; is_compose_scale_set:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; compose_megapix &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compose_scale &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;min&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;1.0&lt;/span&gt;, np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sqrt(compose_megapix &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1e6&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; (full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; full_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;])))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is_compose_scale_set &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compose_work_aspect &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; compose_scale &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; work_scale&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warped_image_scale &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; compose_work_aspect&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warper &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;PyRotationWarper(warp_type, warped_image_scale)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; i &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_names)):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cameras[i]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;focal &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; compose_work_aspect&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cameras[i]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ppx &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; compose_work_aspect&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cameras[i]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ppy &lt;span style="color:#ff79c6"&gt;*=&lt;/span&gt; compose_work_aspect&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sz &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (full_img_sizes[i][&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; compose_scale, full_img_sizes[i][&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; compose_scale)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; K &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cameras[i]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;K()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;astype(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;float32)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; roi &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; warper&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;warpRoi(sz, K, cameras[i]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; corners&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(roi[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sizes&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(roi[&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;abs&lt;/span&gt;(compose_scale &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1e-1&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;resize(src&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;full_img, dsize&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, fx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;compose_scale, fy&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;compose_scale,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; interpolation&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_LINEAR_EXACT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; full_img&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; _img_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;], img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; K &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cameras[idx]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;K()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;astype(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;float32)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; corner, image_warped &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; warper&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;warp(img, K, cameras[idx]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_LINEAR, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BORDER_REFLECT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mask &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;255&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ones((img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;], img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]), np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;uint8)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p, mask_warped &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; warper&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;warp(mask, K, cameras[idx]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;R, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_NEAREST, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BORDER_CONSTANT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compensator&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;apply(idx, corners[idx], image_warped, mask_warped)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; image_warped_s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; image_warped&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;astype(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int16)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dilated_mask &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dilate(masks_warped[idx], &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seam_mask &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;resize(dilated_mask, (mask_warped&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;], mask_warped&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]), &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_LINEAR_EXACT)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mask_warped &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;bitwise_and(seam_mask, mask_warped)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; blender &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; timelapse:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Blender_createDefault(cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Blender_NO)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dst_sz &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;resultRoi(corners&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;corners, sizes&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;sizes)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blend_width &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sqrt(dst_sz[&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; dst_sz[&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;]) &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; blend_strength &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; blend_width &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Blender_createDefault(cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Blender_NO)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; blend_type &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;multiband&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_MultiBandBlender()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setNumBands((np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;log(blend_width) &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;log(&lt;span style="color:#bd93f9"&gt;2.&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1.&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;astype(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; blend_type &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;feather&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail_FeatherBlender()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setSharpness(&lt;span style="color:#bd93f9"&gt;1.&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; blend_width)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;prepare(dst_sz)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; timelapser &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; timelapse:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapser &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;detail&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Timelapser_createDefault(timelapse_type)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;initialize(corners, sizes)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; timelapse:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ma_tones &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ones((image_warped_s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;], image_warped_s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]), np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;uint8)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timelapser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;process(image_warped_s, ma_tones, corners[idx])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pos_s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_names[idx]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rfind(&lt;span style="color:#f1fa8c"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; pos_s &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fixed_file_name &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;fixed_&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; img_names[idx]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fixed_file_name &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_names[idx][:pos_s &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;fixed_&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; img_names[idx][pos_s &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;:]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imwrite(fixed_file_name, timelapser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;getDst())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blender&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;feed(cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;UMat(image_warped_s), mask_warped, corners[idx])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; timelapse:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result_mask &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result, result_mask &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; blender&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;blend(result, result_mask)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imwrite(result_name, result)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; zoom_x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;600.0&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;/&lt;/span&gt; result&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dst &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;normalize(src&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;result, dst&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, alpha&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;255.&lt;/span&gt;, norm_type&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;NORM_MINMAX, dtype&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;CV_8U)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dst &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;resize(dst, dsize&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, fx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;zoom_x, fy&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;zoom_x)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imshow(result_name, dst)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;waitKey()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Done&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#8be9fd;font-style:italic"&gt;__doc__&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;destroyAllWindows()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>How does warp Perspective work?</title><link>https://yh.timefriend.vip/post/machinelearning/warpperspective/</link><pubDate>Sat, 23 Jan 2021 16:29:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/warpperspective/</guid><description>&lt;h1 id="how-does-warp-perspective-work"&gt;How does warp Perspective work?&lt;/h1&gt;&#10;&lt;h2 id="1warp-perspective-with-cv2"&gt;1.warp perspective with cv2&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# coordinate: (y,x), left_top, right_rop, left_bottom, right_bottom&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; src &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;float32([[&lt;span style="color:#bd93f9"&gt;20.0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;20.0&lt;/span&gt; ,&lt;span style="color:#bd93f9"&gt;315.0&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;186.0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;17.2&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;181.0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;299.0&lt;/span&gt;]])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dst &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;float32([[&lt;span style="color:#bd93f9"&gt;0.0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.0&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;0.0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;315.0&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;202.0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;7.0&lt;/span&gt;], [&lt;span style="color:#bd93f9"&gt;200.0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;306.0&lt;/span&gt;]])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# load image&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warp_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imread(&lt;span style="color:#f1fa8c"&gt;&amp;#34;./my_wide_angle_orig.jpg&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warp_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;cvtColor(warp_img, cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;COLOR_BGR2RGB)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;warp_img: &amp;#34;&lt;/span&gt;,warp_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape) &lt;span style="color:#6272a4"&gt;# (638, 958, 3)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; width &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(warp_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]&lt;span style="color:#ff79c6"&gt;/&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; height &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(warp_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]&lt;span style="color:#ff79c6"&gt;/&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; warp_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;resize(warp_img, (width,height), interpolation&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INTER_LINEAR)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;warp_img.shape:&amp;#34;&lt;/span&gt;,warp_img&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape) &lt;span style="color:#6272a4"&gt;# (212, 319, 3)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;## orig image&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; plt&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;subplot(&lt;span style="color:#bd93f9"&gt;121&lt;/span&gt;),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; plt&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;title(&lt;span style="color:#f1fa8c"&gt;&amp;#34;warp_img&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; plt&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imshow(warp_img)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# cv2 warp perspective&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv2_matrix &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;getPerspectiveTransform(src, dst)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;cv2_matrix:&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;,cv2_matrix)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv2_fix_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;warpPerspective(warp_img, cv2_matrix, (width,height))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; plt&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;subplot(&lt;span style="color:#bd93f9"&gt;122&lt;/span&gt;),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; plt&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;title(&lt;span style="color:#f1fa8c"&gt;&amp;#39;cv2_fix_img&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; plt&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imshow(cv2_fix_img) &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; plt&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;show()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2implement-it-in-our-way"&gt;2.Implement it in our way&lt;/h2&gt;&#10;&lt;h3 id="step1-calculate-warp-matrix"&gt;Step1 calculate warp matrix:&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my_warp_matrix reshape:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[ &lt;span style="color:#bd93f9"&gt;1.13729359e+00&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;8.24289989e-18&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2.27458717e+01&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;6.10786436e-02&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;9.69843448e-01&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1.22157287e+00&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3.44743207e-04&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;7.38466280e-05&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1.00000000e+00&lt;/span&gt;]]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step2-use-the-warp-matrix-to-warp-perspective"&gt;Step2. use the warp matrix to warp perspective&lt;/h3&gt;&#10;&lt;p&gt;codes are:&lt;/p&gt;</description></item><item><title>Averaging histograms</title><link>https://yh.timefriend.vip/post/machinelearning/averaginghistogram/</link><pubDate>Tue, 29 Dec 2020 00:49:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/averaginghistogram/</guid><description>&lt;h1 id="averaging-histograms"&gt;Averaging histograms&lt;/h1&gt;&#10;&lt;p&gt;An image histogram is the number of each pixel value, which is displayed in the graph.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;x&lt;/code&gt; axis of the graph is pixel value, range from 0 to 255;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;y&lt;/code&gt; axis of the graph is the number of this pixel value;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://yh.timefriend.vip/img/diagram/deeplearning/standardImageHistograms.jpg" alt="An example of an standard image together with its luminance and RGB histograms"&gt;&lt;/p&gt;&#10;&lt;h2 id="1how-to-averaging-histograms"&gt;1.How to averaging histograms?&lt;/h2&gt;&#10;&lt;p&gt;Our goal is to generate a new image with a more even histogram distribution.&lt;/p&gt;</description></item><item><title>How Keras add two layers?</title><link>https://yh.timefriend.vip/post/machinelearning/howtensorflowkerasaddtwolayer/</link><pubDate>Sun, 13 Dec 2020 13:44:00 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/howtensorflowkerasaddtwolayer/</guid><description>&lt;h1 id="how-keras-add-two-layers"&gt;How Keras add two layers?&lt;/h1&gt;&#10;&lt;p&gt;&lt;code&gt;tf.keras.layers.add()&lt;/code&gt; method can add two layer?&lt;/p&gt;&#10;&lt;p&gt;What it do is sum the values of corresponding positions in two layers.&lt;/p&gt;&#10;&lt;p&gt;For example:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;input_shape &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; tensorflow &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; tf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;enable_eager_execution()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;----------x1 tensor-----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x1 &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;uniform(input_shape, maxval&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;, dtype&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dtypes&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int32)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;print(x1);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;----------x2 tensor-----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x2 &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;uniform(input_shape, maxval&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;, dtype&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dtypes&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;int32)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;print(x2);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;----------add 2 tensors-----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;y &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;keras&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add([x1,x2])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;print(y);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&#10;&amp;mdash;&amp;mdash;&amp;mdash;-x1 tensor&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;&#10;[[[7 6 1]&#10;[5 7 2]]]&#10;&amp;mdash;&amp;mdash;&amp;mdash;-x2 tensor&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;&#10;[[[0 7 8]&#10;[2 9 6]]]&#10;&amp;mdash;&amp;mdash;&amp;mdash;-add 2 tensors&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;&#10;[[[7 13 9]&#10;[7 16 8]]]&lt;/p&gt;</description></item><item><title>如何计算RNN和LSTM的参数数量？</title><link>https://yh.timefriend.vip/post/machinelearning/howtocalculaternnandlstmparameters/</link><pubDate>Mon, 23 Nov 2020 20:29:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/howtocalculaternnandlstmparameters/</guid><description>&lt;h2 id="如何计算rnn和lstm的参数数量"&gt;如何计算RNN和LSTM的参数数量？&lt;/h2&gt;&#10;&lt;p&gt;Environment:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;python version: 3.7.4&#10;pip version: 19.0.3&#10;numpy version:1.19.4&#10;matplotlib version:3.3.3&#10;tensorflow version:1.14.0&#10;keras version:2.1.5&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;代码如下:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; keras.layers &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; SimpleRNN&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; keras.models &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; Model&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; keras &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; Input&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;inputs &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Input((&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;simple_rnn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; SimpleRNN(&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; simple_rnn(inputs) &lt;span style="color:#6272a4"&gt;# The output has shape `[32, 4]`.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Model(inputs,output)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;summary()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;_________________________________________________________________&#10;Layer (type) Output Shape Param # &#10;=================================================================&#10;input_4 (InputLayer) (None, None, 5) 0 &#10;_________________________________________________________________&#10;simple_rnn_1 (SimpleRNN) (None, 4) 40 &#10;=================================================================&#10;Total params: 40&#10;Trainable params: 40&#10;Non-trainable params: 0&#10;_________________________________________________________________&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这里的simple_rnn_1中的param为40是怎么计算的呢？&lt;/p&gt;</description></item><item><title>创建一个简单的RNN网络</title><link>https://yh.timefriend.vip/post/machinelearning/rnnwithminimalrnncell/</link><pubDate>Mon, 23 Nov 2020 19:57:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/rnnwithminimalrnncell/</guid><description>&lt;h1 id="创建一个简单的rnn网络"&gt;创建一个简单的RNN网络&lt;/h1&gt;&#10;&lt;p&gt;Environment:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;python version: 3.7.4&#10;pip version: 19.0.3&#10;numpy version:1.19.4&#10;matplotlib version:3.3.3&#10;tensorflow version:1.14.0&#10;keras version:2.1.5&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;代码如下：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; keras&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; keras &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; backend &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; K&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; keras.layers &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; RNN&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;MinimalRNNCell&lt;/span&gt;(keras&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;layers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Layer):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, units,use_bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;**&lt;/span&gt;kwargs):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;units &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; units&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;state_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; units&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;use_bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; use_bias&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="color:#8be9fd;font-style:italic"&gt;super&lt;/span&gt;(MinimalRNNCell, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;&lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="color:#ff79c6"&gt;**&lt;/span&gt;kwargs)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;build&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, input_shape):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;kernel &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_weight(shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(input_shape[&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;], &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;units), &lt;span style="color:#6272a4"&gt;# 添加kernel&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;initializer&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;uniform&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;name&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;kernel&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;recurrent_kernel &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_weight(&lt;span style="color:#6272a4"&gt;# 添加循环层kernel&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;units, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;units),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;initializer&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;uniform&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;name&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;recurrent_kernel&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;use_bias:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_weight( &lt;span style="color:#6272a4"&gt;# 添加bias&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;units,),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;name&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;bias&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;initializer&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;uniform&amp;#39;&lt;/span&gt;,)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;bias &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;built &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;call&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, inputs, states):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;prev_output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; states[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;h &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; K&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dot(inputs, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;kernel)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;output &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; h &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; K&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dot(prev_output, &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;recurrent_kernel)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; output, [output]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Let&amp;#39;s use this cell in a RNN layer:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cell &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; MinimalRNNCell(&lt;span style="color:#bd93f9"&gt;32&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; keras&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Input((&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;layer &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; RNN(cell)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;y &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; layer(x)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; keras&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Model(x,y)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;summary()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;</description></item><item><title>如何计算一个BatchNormalization的参数？</title><link>https://yh.timefriend.vip/post/machinelearning/howtocalculatebatchnormalizationlayerparams/</link><pubDate>Tue, 17 Nov 2020 19:48:00 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/howtocalculatebatchnormalizationlayerparams/</guid><description>&lt;h1 id="如何计算一个batchnormalization的参数"&gt;如何计算一个BatchNormalization的参数？&lt;/h1&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Environment：&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OS&#9;&#9;&#9;macOS Catalina 10.15.6&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# python &#9;&#9;3.7&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# pip &#9;&#9;&#9;20.1.1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# tensorflow&#9;1.14.0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Keras &#9;&#9;2.1.5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; keras.models &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; Sequential&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; keras.layers &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; Conv2D,BatchNormalization&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Sequential();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# conv2d + max pooling&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;Conv2D(&lt;span style="color:#bd93f9"&gt;96&lt;/span&gt;, &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;kernel_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (&lt;span style="color:#bd93f9"&gt;11&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;11&lt;/span&gt;), &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;strides&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;), &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;valid&amp;#34;&lt;/span&gt;, &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;input_shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;224&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;224&lt;/span&gt;,&lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;activation&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;relu&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;); &lt;span style="color:#6272a4"&gt;# output 55 * 55 * 96 &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# batchNormalization ! &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(BatchNormalization()) &lt;span style="color:#6272a4"&gt;# output&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;summary();&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;output:&lt;/p&gt;</description></item><item><title>双线插值是什么？</title><link>https://yh.timefriend.vip/post/machinelearning/bilinearinterpolation/</link><pubDate>Sun, 15 Nov 2020 22:56:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/bilinearinterpolation/</guid><description>&lt;h1 id="双线插值是什么"&gt;双线插值是什么？&lt;/h1&gt;&#10;&lt;p&gt;图像处理中，有时我们需要放大图片，比如原来图片宽高是&lt;code&gt;300*300&lt;/code&gt;px，如果要在&lt;code&gt;500*500&lt;/code&gt;的屏幕上展示，这时一种方法就是把图片直接拉大到&lt;code&gt;500*500&lt;/code&gt;，但会发现图像变得模糊了，有没有什么办法可以放大图像而又不会让图像过于模糊呢？&lt;/p&gt;</description></item><item><title>如何计算一个卷积层的参数？</title><link>https://yh.timefriend.vip/post/machinelearning/howtocalculatekeralparams/</link><pubDate>Sun, 25 Oct 2020 20:48:00 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/howtocalculatekeralparams/</guid><description>&lt;h1 id="如何计算一个卷积参数"&gt;如何计算一个卷积参数？&lt;/h1&gt;&#10;&lt;p&gt;在计算卷积参数前，我们先来看几个小问题。&lt;/p&gt;&#10;&lt;h2 id="1怎么判断一个卷积核有多少通道"&gt;1.怎么判断一个卷积核有多少通道？&lt;/h2&gt;&#10;&lt;p&gt;&lt;em&gt;一个卷积核的通道数=前一层的通道数；&lt;/em&gt; 比如前一层是64x64x3的图像，那卷积核的通道数就是3层。&lt;/p&gt;&#10;&lt;h2 id="2怎么理解卷积核数量和卷积核通道数"&gt;2.怎么理解卷积核数量和卷积核通道数？&lt;/h2&gt;&#10;&lt;p&gt;如果把一个卷积核比喻成一本书，那卷积核的通道数就是一本书的页数。&lt;/p&gt;</description></item><item><title>如何计算全连接神经元参数</title><link>https://yh.timefriend.vip/post/machinelearning/tensorflowmodelsummary/</link><pubDate>Thu, 22 Oct 2020 07:56:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/tensorflowmodelsummary/</guid><description>&lt;h1 id="如何计算全连接神经元参数"&gt;如何计算全连接神经元参数？&lt;/h1&gt;&#10;&lt;p&gt;模型源码为：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; tensorflow.keras &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; models&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; tensorflow.keras &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; layers&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;network &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; models&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Sequential()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;network&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(layers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Dense(&lt;span style="color:#bd93f9"&gt;504&lt;/span&gt;, activation&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;relu&amp;#39;&lt;/span&gt;, input_shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;504&lt;/span&gt;,)))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;network&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(layers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Dense(&lt;span style="color:#bd93f9"&gt;11&lt;/span&gt;, activation&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;softmax&amp;#39;&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;network&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;summary()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Model: &amp;#34;sequential&amp;#34;&#10;_________________________________________________________________&#10;Layer (type) Output Shape Param # &#10;=================================================================&#10;dense (Dense) (None, 504) 254520 &#10;_________________________________________________________________&#10;dense_1 (Dense) (None, 11) 5555 &#10;=================================================================&#10;Total params: 260,075&#10;Trainable params: 260,075&#10;Non-trainable params: 0&#10;_________________________________________________________________&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在第一行中，dense中的254520是怎么计算呢？&#10;其计算方式如下：&lt;/p&gt;</description></item><item><title>Tensorflow 保存和加载model</title><link>https://yh.timefriend.vip/post/machinelearning/tensorflowsaveandloadmodel/</link><pubDate>Wed, 21 Oct 2020 20:56:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/tensorflowsaveandloadmodel/</guid><description>&lt;h1 id="tensorflow-保存和加载model"&gt;Tensorflow 保存和加载model&lt;/h1&gt;&#10;&lt;p&gt;保存model的代码:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; tensorflow &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; tf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;save_model_path &#9;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;/save_model&amp;#34;&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 保存的文件夹路径&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;network&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;save(save_model_path);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存的目录格式如下，期中&lt;code&gt;saved_model.pb&lt;/code&gt;是主要的文件：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;save_model&#10;&#9;-- assets&#10;&#9;-- variables&#10;&#9;&#9;-- variables.data-00000-of-00001&#10;&#9;&#9;-- variables.index&#10;&#9;-- saved_model.pb&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;加载model如下：&lt;/p&gt;</description></item><item><title>Some notes on Convolution Course</title><link>https://yh.timefriend.vip/post/machinelearning/convolutionalneuralnetwork/</link><pubDate>Thu, 21 May 2020 15:18:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/convolutionalneuralnetwork/</guid><description>&lt;h1 id="some-notes-on-convolution-course"&gt;Some notes on Convolution course&lt;/h1&gt;&#10;&lt;h2 id="what-is-padding"&gt;What is padding?&lt;/h2&gt;&#10;&lt;p&gt;Padding is to add some pixels to the border of the original image, such as a &lt;code&gt;6*6&lt;/code&gt; image will become a &lt;code&gt;8*8&lt;/code&gt; image if we add a pixel to its border.&lt;/p&gt;&#10;&lt;h2 id="valid-convolution-vs-same-convolution"&gt;valid convolution vs same convolution.&lt;/h2&gt;&#10;&lt;p&gt;Valid convolution is on padding that means the actual pixels of the output image after we convole original image with filter.&lt;/p&gt;&#10;&lt;p&gt;Same convolution means adding padding so that the output image has the same size as its input image.&lt;/p&gt;</description></item><item><title>Terms in machine learning</title><link>https://yh.timefriend.vip/post/machinelearning/base/termsinmachinelearning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/base/termsinmachinelearning/</guid><description>&lt;h1 id="terms-in-machine-learning"&gt;Terms in machine learning&lt;/h1&gt;&#10;&lt;h3 id="flops"&gt;FLOPS&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;FLOPS=&lt;em&gt;Fl&lt;/em&gt;oating point &lt;em&gt;op&lt;/em&gt;eration per &lt;em&gt;s&lt;/em&gt;econds&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;FLOPs=&lt;em&gt;Fl&lt;/em&gt;oating point &lt;em&gt;o&lt;/em&gt;peration&lt;em&gt;s&lt;/em&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;REFERNECD: &lt;a href="https://stackoverflow.com/questions/58498651/what-is-flops-in-field-of-deep-learning"&gt;what-is-flops-in-field-of-deep-learning&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>