<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Yaohong</title><link>https://yh.timefriend.vip/</link><description>Recent content on Yaohong</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 28 Jun 2024 06:04:20 +0800</lastBuildDate><atom:link href="https://yh.timefriend.vip/index.xml" rel="self" type="application/rss+xml"/><item><title>Comparison Of Programing Language</title><link>https://yh.timefriend.vip/post/development/comparisonofprograminglanguage/</link><pubDate>Fri, 28 Jun 2024 06:04:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/development/comparisonofprograminglanguage/</guid><description>&lt;h1 id="comparison-of-programing-language"&gt;Comparison Of Programing Language&lt;/h1&gt;&#10;&lt;p&gt;Here are the release dates of the following programming languages:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;C&lt;/strong&gt;: C was first released on March 8, 1972.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Objective-C&lt;/strong&gt;: Objective-C was first released on 1984.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;C++&lt;/strong&gt;: C++ was first released in 1985.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Python&lt;/strong&gt;: Python was first released on February 20, 1991.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Java&lt;/strong&gt;: Java was first released on May 23, 1995.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;PHP&lt;/strong&gt;: PHP was first released on June 8, 1995.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;: PHP was first released on December 4, 1995.&lt;/p&gt;</description></item><item><title>Constraint, Layout An Size On Flutter, Android, iOS And H5</title><link>https://yh.timefriend.vip/post/flutter/constraintlayoutandsizeonflutterandroidiosh5/</link><pubDate>Wed, 26 Jun 2024 09:47:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/flutter/constraintlayoutandsizeonflutterandroidiosh5/</guid><description>&lt;p&gt;In Flutter, the layout principle of &amp;ldquo;Constraints go down, Sizes go up, Parent sets position&amp;rdquo; is a clear and distinct mechanism for handling the layout of widgets. When comparing this with the layout mechanisms in Android, iOS, and HTML5/CSS/JS, we find different approaches and philosophies. Let’s compare these systems to understand their similarities and differences.&lt;/p&gt;&#10;&lt;h2 id="layout-and-size-in-different-systems"&gt;&lt;strong&gt;Layout and Size in Different Systems&lt;/strong&gt;&lt;/h2&gt;&#10;&lt;h3 id="flutter"&gt;&lt;strong&gt;Flutter&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints Go Down:&lt;/strong&gt; Parent widgets send constraints to their children, specifying permissible sizes.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Sizes Go Up:&lt;/strong&gt; Children choose their size within those constraints.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Parent Sets Position:&lt;/strong&gt; Parents position children based on their size and constraints.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="android-view-system"&gt;&lt;strong&gt;Android (View System)&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Measure Phase:&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Parent Determines Constraints:&lt;/strong&gt; Parent views provide measurement specifications (&lt;code&gt;MeasureSpec&lt;/code&gt;) to children.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Children Measure Size:&lt;/strong&gt; Children determine their desired size based on these specifications, including modes (&lt;code&gt;EXACTLY&lt;/code&gt;, &lt;code&gt;AT_MOST&lt;/code&gt;, &lt;code&gt;UNSPECIFIED&lt;/code&gt;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Layout Phase:&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Parent Sets Size and Position:&lt;/strong&gt; Parents decide the final size and position of each child view using the &lt;code&gt;layout()&lt;/code&gt; method, setting exact bounds within the parent’s coordinate system.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="ios-uikit"&gt;&lt;strong&gt;iOS (UIKit)&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints (Auto Layout):&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints Propagation:&lt;/strong&gt; Constraints define relationships between views, such as size ratios or alignments.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Size Determination:&lt;/strong&gt; Each view calculates its size based on these constraints and intrinsic content size.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Layout Passes:&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Parent Resolves Constraints:&lt;/strong&gt; Constraints are resolved to compute the frames (positions and sizes) of views.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Frames Set Position:&lt;/strong&gt; The final position and size of each view are determined by resolving the constraints to specific frames.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="html5cssjs"&gt;&lt;strong&gt;HTML5/CSS/JS&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;CSS Box Model:&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints Through CSS:&lt;/strong&gt; CSS rules (like &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;height&lt;/code&gt;, &lt;code&gt;max-width&lt;/code&gt;, &lt;code&gt;min-width&lt;/code&gt;, etc.) define size constraints.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Size Computation:&lt;/strong&gt; Elements calculate their size based on CSS rules, content size, and parent constraints.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Layout Mechanisms:&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Flow Layout:&lt;/strong&gt; Default document flow where elements take up available space in order.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Flexbox:&lt;/strong&gt; Parent container defines constraints and alignment for flex items, which then size themselves within these constraints.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Grid Layout:&lt;/strong&gt; Parent defines a grid structure, and child elements size and position themselves within grid areas.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Positioning:&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;CSS Positioning:&lt;/strong&gt; Elements can be positioned using properties like &lt;code&gt;position&lt;/code&gt;, &lt;code&gt;top&lt;/code&gt;, &lt;code&gt;left&lt;/code&gt;, &lt;code&gt;right&lt;/code&gt;, and &lt;code&gt;bottom&lt;/code&gt;, relative to their parent or document flow.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="comparison-key-aspects"&gt;&lt;strong&gt;Comparison: Key Aspects&lt;/strong&gt;&lt;/h2&gt;&#10;&lt;h3 id="constraints-handling"&gt;&lt;strong&gt;Constraints Handling&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Flutter:&lt;/strong&gt; Constraints explicitly passed from parent to child in a hierarchical manner.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Android:&lt;/strong&gt; Constraints come from measure specs which include modes and sizes, less explicit than Flutter.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;iOS:&lt;/strong&gt; Constraints are set using Auto Layout, forming a constraint system that is resolved for size and position.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;HTML/CSS:&lt;/strong&gt; Constraints defined using CSS properties; more flexible and varied ways to specify constraints.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="size-determination"&gt;&lt;strong&gt;Size Determination&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Flutter:&lt;/strong&gt; Children determine size within provided constraints.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Android:&lt;/strong&gt; Children measure themselves based on measure specs and report back desired sizes.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;iOS:&lt;/strong&gt; Size determined by solving constraints in Auto Layout system.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;HTML/CSS:&lt;/strong&gt; Size determined by CSS rules, intrinsic content, and parent constraints.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="positioning"&gt;&lt;strong&gt;Positioning&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Flutter:&lt;/strong&gt; Parent sets position of children after size determination.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Android:&lt;/strong&gt; Parent uses &lt;code&gt;layout()&lt;/code&gt; method to set position within bounds.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;iOS:&lt;/strong&gt; Position determined by resolving constraints to frames.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;HTML/CSS:&lt;/strong&gt; Position determined by CSS properties and layout rules (flow, flexbox, grid).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="flexibility"&gt;&lt;strong&gt;Flexibility&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Flutter:&lt;/strong&gt; Clear and flexible constraint-based system.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Android:&lt;/strong&gt; More rigid with fixed measure/layout phases.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;iOS:&lt;/strong&gt; Flexible but complex due to constraint-solving.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;HTML/CSS:&lt;/strong&gt; Highly flexible with multiple layout models (flow, flexbox, grid).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="examples"&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;h4 id="flutter-example"&gt;&lt;strong&gt;Flutter Example:&lt;/strong&gt;&lt;/h4&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-dart" data-lang="dart"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Container(&#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;constraints:&lt;/span&gt; BoxConstraints(&#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;minWidth:&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:#8be9fd;font-style:italic"&gt;maxWidth:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;200&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;child:&lt;/span&gt; Text(&lt;span style="color:#f1fa8c"&gt;&amp;#39;Hello&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints:&lt;/strong&gt; &lt;code&gt;Container&lt;/code&gt; sends constraints to &lt;code&gt;Text&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Size:&lt;/strong&gt; &lt;code&gt;Text&lt;/code&gt; chooses a size within constraints.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Position:&lt;/strong&gt; &lt;code&gt;Container&lt;/code&gt; sets the position of &lt;code&gt;Text&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="android-example"&gt;&lt;strong&gt;Android Example:&lt;/strong&gt;&lt;/h4&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-xml" data-lang="xml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;&amp;lt;LinearLayout&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;android:layout_width=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;match_parent&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:#50fa7b"&gt;android:layout_height=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;match_parent&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;&amp;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;&amp;lt;TextView&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;android:layout_width=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;wrap_content&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:#50fa7b"&gt;android:layout_height=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;wrap_content&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:#50fa7b"&gt;android:text=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;/&amp;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;&amp;lt;/LinearLayout&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints:&lt;/strong&gt; &lt;code&gt;LinearLayout&lt;/code&gt; provides measure specs to &lt;code&gt;TextView&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Size:&lt;/strong&gt; &lt;code&gt;TextView&lt;/code&gt; measures itself based on specs.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Position:&lt;/strong&gt; &lt;code&gt;LinearLayout&lt;/code&gt; sets &lt;code&gt;TextView&lt;/code&gt;&amp;rsquo;s position using &lt;code&gt;layout()&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="ios-example"&gt;&lt;strong&gt;iOS Example:&lt;/strong&gt;&lt;/h4&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-swift" data-lang="swift"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;let&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;container&lt;/span&gt; = UIView()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;container.translatesAutoresizingMaskIntoConstraints = &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:#8be9fd;font-style:italic"&gt;let&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;label&lt;/span&gt; = UILabel()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;label.translatesAutoresizingMaskIntoConstraints = &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;label.text = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Hello&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;container.addSubview(label)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NSLayoutConstraint.activate([&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; label.widthAnchor.constraint(greaterThanOrEqualToConstant: &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; label.widthAnchor.constraint(lessThanOrEqualToConstant: &lt;span style="color:#bd93f9"&gt;200&lt;/span&gt;),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; label.centerXAnchor.constraint(equalTo: container.centerXAnchor),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; label.centerYAnchor.constraint(equalTo: container.centerYAnchor)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;])&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints:&lt;/strong&gt; &lt;code&gt;NSLayoutConstraint&lt;/code&gt; sets constraints on &lt;code&gt;label&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Size:&lt;/strong&gt; &lt;code&gt;UILabel&lt;/code&gt; sizes itself based on constraints.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Position:&lt;/strong&gt; Constraints determine &lt;code&gt;UILabel&lt;/code&gt;&amp;rsquo;s position within &lt;code&gt;container&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="htmlcss-example"&gt;&lt;strong&gt;HTML/CSS Example:&lt;/strong&gt;&lt;/h4&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-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;style&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;display: flex; justify-content: center; align-items: center; width: 200px; height: 200px;&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;style&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;min-width: 100px; max-width: 200px;&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Hello&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Constraints:&lt;/strong&gt; CSS properties define constraints.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Size:&lt;/strong&gt; Child &lt;code&gt;div&lt;/code&gt; sizes itself based on min and max width.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Position:&lt;/strong&gt; Parent &lt;code&gt;div&lt;/code&gt; positions the child using flexbox.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="summary"&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h2&gt;&#10;&lt;p&gt;The layout systems in Flutter, Android, iOS, and HTML5/CSS/JS each have their own approaches:&lt;/p&gt;</description></item><item><title>What is the purpose of layering the architecture in a Flutter project? How should it be structured?</title><link>https://yh.timefriend.vip/post/flutter/howtolayerarchitectureinflutterproject/</link><pubDate>Thu, 30 May 2024 18:17:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/flutter/howtolayerarchitectureinflutterproject/</guid><description>&lt;h1 id="what-is-the-purpose-of-layering-the-architecture-in-a-flutter-project-how-should-it-be-structured"&gt;What is the purpose of layering the architecture in a Flutter project? How should it be structured?&lt;/h1&gt;&#10;&lt;h2 id="1the-purpose-of-layering-the-architecture-in-a-flutter-project"&gt;1.The purpose of layering the architecture in a Flutter project&lt;/h2&gt;&#10;&lt;p&gt;The purpose of layering the architecture in a Flutter project is to enhance code maintainability, promote a clear separation of concerns, promote reusability, improve testability, and enhance scalability.&lt;/p&gt;&#10;&lt;h2 id="2what-is-maintainability"&gt;2.What is &lt;strong&gt;maintainability&lt;/strong&gt;?&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://www.sciencedirect.com/topics/engineering/maintainability#:~:text=Maintainability%20is%20defined%20as%20the,in%20accordance%20with%20prescribed%20procedures."&gt;Maintainability is defined as the probability that a failed component or system will be restored or repaired to a specified condition within a specified period or time when maintenance is performed in accordance with prescribed procedures.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Must-know information about Swift</title><link>https://yh.timefriend.vip/post/programinglang/swiftlanguageinafile/</link><pubDate>Sat, 25 May 2024 19:55:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/programinglang/swiftlanguageinafile/</guid><description>&lt;h1 id="must-know-information-about-swift"&gt;Must-know information about Swift&lt;/h1&gt;&#10;&lt;h2 id="entry-point"&gt;entry point&lt;/h2&gt;&#10;&lt;p&gt;main?&lt;/p&gt;&#10;&lt;h2 id="print-log"&gt;print log&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;print(&amp;#34;Hello swift&amp;#34;)&#10;let name = &amp;#34;swift&amp;#34;&#10;print(&amp;#34;Hello, \(name)&amp;#34;)&#10;print(&amp;#34;Hello, \(name1 ?? name)&amp;#34;)// If the optional value is missing, the default value is used instead.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="variable-constant"&gt;Variable, Constant&lt;/h2&gt;&#10;&lt;p&gt;Int:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;On a 32-bit platform, Int is the same size as Int32.&lt;/li&gt;&#10;&lt;li&gt;On a 64-bit platform, Int is the same size as Int64.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;UInt:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;On a 32-bit platform, UInt is the same size as UInt32.&lt;/li&gt;&#10;&lt;li&gt;On a 64-bit platform, UInt is the same size as UInt64.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Double represents a 64-bit floating-point number.&lt;/p&gt;</description></item><item><title>The Flutter Plugin Project Files</title><link>https://yh.timefriend.vip/post/flutter/theflutterpluginprojectfiles/</link><pubDate>Fri, 24 May 2024 09:17:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/flutter/theflutterpluginprojectfiles/</guid><description>&lt;h1 id="the-flutter-plugin-project-files"&gt;The Flutter Plugin Project Files&lt;/h1&gt;&#10;&lt;p&gt;Creating the plugin project&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ flutter create --org com.example --template=plugin --platforms=android,ios,linux,macos,windows hello_plugin &#10;&#10;Signing iOS app for device deployment using developer identity: &amp;#34;Apple&#10;Development: Yaohong Huang (WS3UUERGF9)&amp;#34;&#10;Creating project hello_plugin...&#10;Resolving dependencies in hello_plugin... (3.3s)&#10;Got dependencies in hello_plugin.&#10;Resolving dependencies in hello_plugin/example... (1.1s)&#10;Got dependencies in hello_plugin/example.&#10;Wrote 161 files.&#10;&#10;All done!&#10;&#10;Your plugin code is in hello_plugin/lib/hello_plugin.dart.&#10;&#10;Your example app code is in hello_plugin/example/lib/main.dart.&#10;&#10;&#10;Host platform code is in the android, ios, linux, macos, windows directories&#10;under hello_plugin.&#10;To edit platform code in an IDE see&#10;https://flutter.dev/developing-packages/#edit-plugin-package.&#10;&#10;&#10;To add platforms, run `flutter create -t plugin --platforms &amp;lt;platforms&amp;gt; .` under&#10;hello_plugin.&#10;For more information, see https://flutter.dev/go/plugin-platforms.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;hello_plugin&#10;├── CHANGELOG.md&#10;├── LICENSE&#10;├── README.md&#10;├── analysis_options.yaml&#10;├── android&#10;│   ├── build.gradle&#10;│   ├── hello_plugin_android.iml&#10;│   ├── local.properties&#10;│   ├── settings.gradle&#10;│   └── src&#10;│   ├── main&#10;│   └── test&#10;├── example&#10;│   ├── README.md&#10;│   ├── analysis_options.yaml&#10;│   ├── android&#10;│   │   ├── app&#10;│   │   ├── build.gradle&#10;│   │   ├── gradle&#10;│   │   ├── gradle.properties&#10;│   │   ├── gradlew&#10;│   │   ├── gradlew.bat&#10;│   │   ├── hello_plugin_example_android.iml&#10;│   │   ├── local.properties&#10;│   │   └── settings.gradle&#10;│   ├── build&#10;│   │   ├── 52f352800ae67b257006addf8ca3668f&#10;│   │   ├── e29aedf18e567df5728f6b7ce57d2e97.cache.dill.track.dill&#10;│   │   ├── ios&#10;│   │   └── last_build_run.json&#10;│   ├── hello_plugin_example.iml&#10;│   ├── integration_test&#10;│   │   └── plugin_integration_test.dart&#10;│   ├── ios&#10;│   │   ├── Flutter&#10;│   │   ├── Podfile&#10;│   │   ├── Podfile.lock&#10;│   │   ├── Pods&#10;│   │   ├── Runner&#10;│   │   ├── Runner.xcodeproj&#10;│   │   ├── Runner.xcworkspace&#10;│   │   └── RunnerTests&#10;│   ├── lib&#10;│   │   └── main.dart&#10;│   ├── linux&#10;│   │   ├── CMakeLists.txt&#10;│   │   ├── flutter&#10;│   │   ├── main.cc&#10;│   │   ├── my_application.cc&#10;│   │   └── my_application.h&#10;│   ├── macos&#10;│   │   ├── Flutter&#10;│   │   ├── Podfile&#10;│   │   ├── Runner&#10;│   │   ├── Runner.xcodeproj&#10;│   │   ├── Runner.xcworkspace&#10;│   │   └── RunnerTests&#10;│   ├── pubspec.lock&#10;│   ├── pubspec.yaml&#10;│   ├── test&#10;│   │   └── widget_test.dart&#10;│   └── windows&#10;│   ├── CMakeLists.txt&#10;│   ├── flutter&#10;│   └── runner&#10;├── hello_plugin.iml&#10;├── ios&#10;│   ├── Assets&#10;│   ├── Classes&#10;│   │   └── HelloPlugin.swift&#10;│   └── hello_plugin.podspec&#10;├── lib&#10;│   ├── hello_plugin.dart&#10;│   ├── hello_plugin_method_channel.dart&#10;│   └── hello_plugin_platform_interface.dart&#10;├── linux&#10;│   ├── CMakeLists.txt&#10;│   ├── hello_plugin.cc&#10;│   ├── hello_plugin_private.h&#10;│   ├── include&#10;│   │   └── hello_plugin&#10;│   └── test&#10;│   └── hello_plugin_test.cc&#10;├── macos&#10;│   ├── Classes&#10;│   │   └── HelloPlugin.swift&#10;│   └── hello_plugin.podspec&#10;├── pubspec.lock&#10;├── pubspec.yaml&#10;├── test&#10;│   ├── hello_plugin_method_channel_test.dart&#10;│   └── hello_plugin_test.dart&#10;└── windows&#10; ├── CMakeLists.txt&#10; ├── hello_plugin.cpp&#10; ├── hello_plugin.h&#10; ├── hello_plugin_c_api.cpp&#10; ├── include&#10; │   └── hello_plugin&#10; └── test&#10; └── hello_plugin_test.cpp&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;name: hello_plugin&#10;description: A new Flutter plugin project.&#10;version: 0.0.1&#10;homepage:&#10;&#10;environment:&#10; sdk: &amp;#39;&amp;gt;=3.0.5 &amp;lt;4.0.0&amp;#39;&#10; flutter: &amp;#34;&amp;gt;=3.3.0&amp;#34;&#10;&#10;dependencies:&#10; flutter:&#10; sdk: flutter&#10; plugin_platform_interface: ^2.0.2&#10;&#10;dev_dependencies:&#10; flutter_test:&#10; sdk: flutter&#10; flutter_lints: ^2.0.0&#10;&#10;# For information on the generic Dart part of this file, see the&#10;# following page: https://dart.dev/tools/pub/pubspec&#10;&#10;# The following section is specific to Flutter packages.&#10;flutter:&#10; # This section identifies this Flutter project as a plugin project.&#10; # The &amp;#39;pluginClass&amp;#39; specifies the class (in Java, Kotlin, Swift, Objective-C, etc.)&#10; # which should be registered in the plugin registry. This is required for&#10; # using method channels.&#10; # The Android &amp;#39;package&amp;#39; specifies package in which the registered class is.&#10; # This is required for using method channels on Android.&#10; # The &amp;#39;ffiPlugin&amp;#39; specifies that native code should be built and bundled.&#10; # This is required for using `dart:ffi`.&#10; # All these are used by the tooling to maintain consistency when&#10; # adding or updating assets for this project.&#10; plugin:&#10; platforms:&#10; android:&#10; package: com.example.hello_plugin&#10; pluginClass: HelloPlugin&#10; ios:&#10; pluginClass: HelloPlugin&#10; linux:&#10; pluginClass: HelloPlugin&#10; macos:&#10; pluginClass: HelloPlugin&#10; windows:&#10; pluginClass: HelloPluginCApi&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>The Widget tree, Element tree, and Rendering Object tree in flutter</title><link>https://yh.timefriend.vip/post/flutter/flutterwidgetelementrenderingobjecttree/</link><pubDate>Thu, 23 May 2024 22:17:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/flutter/flutterwidgetelementrenderingobjecttree/</guid><description>&lt;h1 id="the-widget-tree-element-tree-rendering-object-tree-in-flutter"&gt;The Widget tree, Element tree, Rendering Object tree in flutter&lt;/h1&gt;&#10;&lt;p&gt;The purpose of the three type of trees in Flutter:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Widget tree:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1.hold the widget config;&lt;/li&gt;&#10;&lt;li&gt;2.offer a public API;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Element tree:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1.manage the lifecycle of widget;&lt;/li&gt;&#10;&lt;li&gt;2.hold a spot in the UI hierarchy;&lt;/li&gt;&#10;&lt;li&gt;3.manage parent/child relationship;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Rendering object tree:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1.layout, size and paint itself,&lt;/li&gt;&#10;&lt;li&gt;2.layout children;&lt;/li&gt;&#10;&lt;li&gt;3.claim input event;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Entry-point &lt;a href="https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/binding.dart"&gt;binding.dart&lt;/a&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-dart" data-lang="dart"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd"&gt;void&lt;/span&gt; runApp(Widget app){&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; WidgetsFlutterBinding.ensureInitialized()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ..attachRootWidget(app)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ..scheduleWarmUpFrame();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Resouce: &lt;a href="https://www.youtube.com/watch?v=996ZgFRENMs"&gt;https://www.youtube.com/watch?v=996ZgFRENMs&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The project files generated by 'flutter create --template=plugin_ffi' using dart:ffi to call C APIs</title><link>https://yh.timefriend.vip/post/flutter/theprojectfilesflutterpluginffidartfficapis/</link><pubDate>Thu, 23 May 2024 20:17:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/flutter/theprojectfilesflutterpluginffidartfficapis/</guid><description>&lt;h1 id="the-project-files-generated-by-flutter-create-templateplugin_ffi-using-dartffi-to-call-c-apis"&gt;The project files generated by &amp;lsquo;flutter create &amp;ndash;template=plugin_ffi&amp;rsquo; using dart:ffi to call C APIs&lt;/h1&gt;&#10;&lt;p&gt;Flutter mobile and desktop apps can use the &lt;code&gt;dart:ffi&lt;/code&gt; library to call native C APIs.&lt;/p&gt;&#10;&lt;p&gt;Here are the project files generated by executing the following command:&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-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flutter create --platforms&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;android,ios,macos,windows,linux --template&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;plugin_ffi native_add&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;flutter version: flutter_macos_3.10.5-stable&lt;/p&gt;&#10;&lt;p&gt;Reference:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;1.&lt;a href="https://docs.flutter.dev/platform-integration/android/c-interop"&gt;Binding to native Android code using dart:ffi&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2.&lt;a href="https://docs.flutter.dev/platform-integration/ios/c-interop"&gt;Binding to native iOS code using dart:ffi&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Notes:&lt;/p&gt;&#10;&lt;p&gt;1.The FFI library can only bind against C symbols, so in C++ these symbols are marked extern &amp;ldquo;C&amp;rdquo;.&lt;/p&gt;</description></item><item><title>The method with the same name from the last mixin will override the previous ones in dart</title><link>https://yh.timefriend.vip/post/flutter/mixinmethodoverride/</link><pubDate>Mon, 20 May 2024 18:17:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/flutter/mixinmethodoverride/</guid><description>&lt;h1 id="the-method-with-the-same-name-from-the-last-mixin-will-override-the-previous-ones-in-dart"&gt;The method with the same name from the last mixin will override the previous ones in dart&lt;/h1&gt;&#10;&lt;p&gt;TestMixin file:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;class MyObject{&#10; init(){&#10; print(&amp;#34;draw object&amp;#34;);&#10; }&#10;}&#10;&#10;mixin Circle{&#10; &#10; init(){&#10; print(&amp;#34;draw circle&amp;#34;);&#10; }&#10;}&#10;&#10;&#10;mixin Square{&#10; init(){&#10; print(&amp;#34;draw Square&amp;#34;);&#10; }&#10;}&#10;&#10;class MyShape extends MyObject with Circle, Square{&#10; init() {&#10; super.init();&#10; print(&amp;#34;draw MyShape&amp;#34;);&#10; }&#10;}&#10;&#10;&#10;void main() {&#10; MyShape shape = MyShape();&#10; shape.init();&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;//Output:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;draw Square&#10;draw MyShape&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Rhythmically Intermittent When my Iphone 12 Connect To MacOS</title><link>https://yh.timefriend.vip/post/other/rhythmicallyintermittentwheniphoneconnecttomacos/</link><pubDate>Tue, 12 Mar 2024 19:01:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/rhythmicallyintermittentwheniphoneconnecttomacos/</guid><description>&lt;h1 id="rhythmically-intermittent-when-my-iphone-12-connect-to-macos"&gt;Rhythmically Intermittent When my Iphone 12 Connect To MacOS&lt;/h1&gt;&#10;&lt;p&gt;Recently, when my iPhone connects to MacOS, the battery icon on the phone alternates between showing the charging (lightning bolt icon) for a few seconds and then disappearing (no charging battery icon). This continuous loop prevents the phone from charging through MacOS and also hinders the ability to debug iPhone apps.&lt;/p&gt;&#10;&lt;p&gt;Mac system version with the issue: macOS Monterey Version 12.7.3&#10;iPhone version with the issue: iOS 16.1&lt;/p&gt;</description></item><item><title>Xcode or Android Studio is unable to list my iPhone device on MacOS</title><link>https://yh.timefriend.vip/post/other/unabletofindiphonedeviceinxcodeorandroidstudio/</link><pubDate>Tue, 21 Mar 2023 14:02:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/unabletofindiphonedeviceinxcodeorandroidstudio/</guid><description>&lt;h1 id="xcode-or-android-studio-is-unable-to-list-my-iphone-device"&gt;Xcode or Android Studio is unable to list my iPhone device&lt;/h1&gt;&#10;&lt;p&gt;I encountered an issue where my iPhone12 device was not listed in Android Studio while I was developing.&lt;/p&gt;&#10;&lt;p&gt;The issue was dispeared after I restart my macOS, but it occurred again when I reopened my MacBook Pro from sleep mode.&lt;/p&gt;&#10;&lt;p&gt;I noticed a new process running in &lt;code&gt;Activity Monitor&lt;/code&gt; during the issue occurred.&lt;/p&gt;&#10;&lt;p&gt;Here is the process list while android Studio is able to detect my iPhone device:&lt;/p&gt;</description></item><item><title>Distribution failed with errors When developing ios App</title><link>https://yh.timefriend.vip/post/flutter/fluttermacosbuilderror/</link><pubDate>Thu, 23 Feb 2023 09:47:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/flutter/fluttermacosbuilderror/</guid><description>&lt;h1 id="distribution-failed-with-errors-when-developing-ios-app"&gt;Distribution failed with errors When developing ios App&lt;/h1&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Distribution failed with errors:&#10;&#10;Asset validation failed&#10;&#10;The product archive is invalid. The Info.plist must contain a LSApplicationCategoryType key, whose value is the UTI for a valid category. For more details, see &amp;#34;Submitting your Mac apps to the App Store&amp;#34;. (ID: 67f59c1b-bb08-4694-978f-11d07ff31357)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Solve this issue by add following codes on &lt;code&gt;&amp;lt;project root folder&amp;gt;/macos/Runner/Info.plist&lt;/code&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt; &amp;lt;key&amp;gt;LSApplicationCategoryType&amp;lt;/key&amp;gt;&#10; &amp;lt;string&amp;gt;public.app-category.productivity&amp;lt;/string&amp;gt;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;the value of &lt;code&gt;LSApplicationCategoryType&lt;/code&gt; refer &lt;a href="https://developer.apple.com/documentation/bundleresources/information_property_list/lsapplicationcategorytype"&gt;https://developer.apple.com/documentation/bundleresources/information_property_list/lsapplicationcategorytype&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Flutter HTTP host maven.google.com is not reachable in Windows</title><link>https://yh.timefriend.vip/post/other/flutterhttphostmavengooglecomisnotreachableinwindows/</link><pubDate>Wed, 20 Apr 2022 19:25:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/flutterhttphostmavengooglecomisnotreachableinwindows/</guid><description>&lt;h1 id="flutter-http-host-httpsmavengooglecom-is-not-reachable-in-windows-10"&gt;Flutter HTTP host &lt;code&gt;https://maven.google.com/&lt;/code&gt; is not reachable in Windows 10&lt;/h1&gt;&#10;&lt;p&gt;It shows the following error messages after executing &lt;code&gt;flutter doctor&lt;/code&gt; in terminal prompt in Windows 10.&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;Doctor summary &lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;to see all details, run flutter doctor -v&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;[&lt;/span&gt;√&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt; Flutter &lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;Channel stable, 2.10.3, on Microsoft Windows &lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;Version 10.0.19044.1586&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;, locale zh-CN&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;[&lt;/span&gt;√&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt; Android toolchain - develop &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; Android devices &lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;Android SDK version 30.0.3&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;[&lt;/span&gt;√&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt; Chrome - develop &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; the web&#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:#ff79c6"&gt;]&lt;/span&gt; Visual Studio - develop &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; Windows &lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;Visual Studio Community &lt;span style="color:#bd93f9"&gt;2019&lt;/span&gt; 16.11.2&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;[&lt;/span&gt;√&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt; Android Studio &lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;version 4.1&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;[&lt;/span&gt;√&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt; Connected device &lt;span style="color:#ff79c6"&gt;(&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt; available&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;[&lt;/span&gt;!&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt; HTTP Host Availability&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; X HTTP host https://maven.google.com/ is not reachable. Reason: An error occurred &lt;span style="color:#ff79c6"&gt;while&lt;/span&gt; checking the HTTP host:&#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; X HTTP host https://cloud.google.com/ is not reachable. Reason: An error occurred &lt;span style="color:#ff79c6"&gt;while&lt;/span&gt; checking the HTTP host:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 信号灯超时时间已到&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="how-to-handle-http-host-httpsmavengooglecom-is-not-reachable"&gt;How to handle &lt;code&gt;HTTP host https://maven.google.com/ is not reachable&lt;/code&gt;?&lt;/h2&gt;&#10;&lt;h3 id="1get-the-port-of-your-http-proxy"&gt;1.Get the port of your http proxy&lt;/h3&gt;&#10;&lt;p&gt;For example, my https proxy port is 10809, I get it in &lt;code&gt;Option Settings&lt;/code&gt; in the v2 proxy. V2 socks port is 10808, https port is sock port +1 which is 10809;&lt;/p&gt;</description></item><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>Github ssh key didn't work</title><link>https://yh.timefriend.vip/post/other/githubsshkeydidntwork/</link><pubDate>Sun, 05 Sep 2021 14:18:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/githubsshkeydidntwork/</guid><description>&lt;h1 id="github-ssh-key-didnt-work"&gt;Github ssh key didn&amp;rsquo;t work&lt;/h1&gt;&#10;&lt;p&gt;After you config a ssh key on github, you can test your ssh connection.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1.Open Terminal.&lt;/li&gt;&#10;&lt;li&gt;2.Enter the following:&lt;/li&gt;&#10;&lt;/ul&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;$ ssh -T git@github.com&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you see your username of github in the resulting message, that means you configure successfully.&lt;/p&gt;&#10;&lt;p&gt;But, when you run &lt;code&gt;git pull&lt;/code&gt; under the root of the project, the it prompt you to enter your Username of github, what is wrong?！&lt;/p&gt;&#10;&lt;p&gt;Now you should check that the URL in git config file starts with &lt;code&gt;git@&lt;/code&gt;, instead of the &lt;code&gt;http&lt;/code&gt; or &lt;code&gt;https&lt;/code&gt;:&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>Github API Basic Authentication Example</title><link>https://yh.timefriend.vip/post/other/githubapibasicauthentication/</link><pubDate>Wed, 07 Jul 2021 20:56:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/githubapibasicauthentication/</guid><description>&lt;h1 id="github-api-basic-authentication-example"&gt;Github API Basic Authentication Example&lt;/h1&gt;&#10;&lt;h2 id="1generate-personal-access-tokens"&gt;1.Generate Personal access tokens&lt;/h2&gt;&#10;&lt;p&gt;Open this page &lt;a href="https://github.com/settings/tokens"&gt;Generate Personal access tokens&lt;/a&gt; and click &lt;code&gt;Generate new token&lt;/code&gt; to get a token;&lt;/p&gt;&#10;&lt;h2 id="2use-access-token-to-request-github-rest-api"&gt;2.Use access token to request Github REST api&lt;/h2&gt;&#10;&lt;p&gt;2.1 Install requests with pip;&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;pip install requests&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2.2 Sustitute &lt;code&gt;GITHUB_API_USER_NAME&lt;/code&gt; with your user name and &lt;code&gt;GITHUB_API_PERSONAL_TOKEN&lt;/code&gt; with the token you got in step one, then run the following code;&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-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; requests &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; Request, Session&#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; requests.exceptions &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; ConnectionError, Timeout, TooManyRedirects&#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;getRateLimit&lt;/span&gt;():&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;https://api.github.com/rate_limit&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;(url)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parameters &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; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; headers &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;Accept&amp;#39;&lt;/span&gt;:&lt;span style="color:#f1fa8c"&gt;&amp;#39;application/vnd.github.v3+json&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; session &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Session()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; session&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;auth &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (&lt;span style="color:#f1fa8c"&gt;&amp;#34;GITHUB_API_USER_NAME&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;GITHUB_API_PERSONAL_TOKEN&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; session&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update(headers)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data &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:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; session&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(url, params&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;parameters)&#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; response;&#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; (ConnectionError, Timeout, TooManyRedirects) &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;(e)&#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; 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;&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; rs &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; getRateLimit()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# print(rs.headers)&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;(rs&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;text)&#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;## if your access token is correct, the limit of core of resources should be 5000 rather than 60.&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;resources&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;core&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;limit&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;5000&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;used&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1245&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;remaining&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;3755&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1625664206&lt;/span&gt;},&lt;span style="color:#f1fa8c"&gt;&amp;#34;search&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;limit&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;30&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;used&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;remaining&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;30&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1625662728&lt;/span&gt;},&lt;span style="color:#f1fa8c"&gt;&amp;#34;graphql&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;limit&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;5000&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;used&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;remaining&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;5000&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1625666268&lt;/span&gt;},&lt;span style="color:#f1fa8c"&gt;&amp;#34;integration_manifest&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;limit&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;5000&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;used&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;remaining&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;5000&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1625666268&lt;/span&gt;},&lt;span style="color:#f1fa8c"&gt;&amp;#34;source_import&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;limit&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;used&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;remaining&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1625662728&lt;/span&gt;},&lt;span style="color:#f1fa8c"&gt;&amp;#34;code_scanning_upload&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;limit&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;500&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;used&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;remaining&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;500&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1625666268&lt;/span&gt;}},&lt;span style="color:#f1fa8c"&gt;&amp;#34;rate&amp;#34;&lt;/span&gt;:{&lt;span style="color:#f1fa8c"&gt;&amp;#34;limit&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;5000&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;used&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1245&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;remaining&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;3755&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;:&lt;span style="color:#bd93f9"&gt;1625664206&lt;/span&gt;}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;REFERENCE:&#10;1.&lt;a href="https://docs.github.com/en/rest/overview/other-authentication-methods"&gt;Other authentication methods&#10;&lt;/a&gt;&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 form of our body in future</title><link>https://yh.timefriend.vip/post/other/theformofourbodyinfuture/</link><pubDate>Mon, 14 Jun 2021 22:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/theformofourbodyinfuture/</guid><description>&lt;h1 id="the-form-of-our-body-in-future"&gt;The form of our body in future&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1.The human body consumes energy in the form of carbohydrate.&lt;/li&gt;&#10;&lt;li&gt;2.The human body consumes energy in the form of carbohydrate and electric, part of our body are machine.&lt;/li&gt;&#10;&lt;li&gt;3.The human body consumes energy in the form of nuclear in long long future, and we can calculate just like we are a super computer .&lt;/li&gt;&#10;&lt;/ul&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>How to extract knowledge?</title><link>https://yh.timefriend.vip/post/other/howtoextractknowledge/</link><pubDate>Fri, 21 May 2021 22:04:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/howtoextractknowledge/</guid><description>&lt;h1 id="how-to-extract-knowledge"&gt;How to extract knowledge?&lt;/h1&gt;&#10;&lt;p&gt;I held the opinion before that to do knowledge extraction can be done only by summarizing, but it is not a good way. In contrast, put the knowledge back to a concrete scenario will work for user understandings.&lt;/p&gt;&#10;&lt;p&gt;I used to thought common truths are the most valuable of knowledge, but perhaps we need the knowledge with personal experiences.&lt;/p&gt;&#10;&lt;p&gt;Because it contains the problem that the author face and the way how one to think, while summary knowledge is only the result of thinking.&lt;/p&gt;</description></item><item><title>How to face the investment risk?</title><link>https://yh.timefriend.vip/post/invest/howtofacetheinvestmentrisk/</link><pubDate>Fri, 14 May 2021 22:44:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/invest/howtofacetheinvestmentrisk/</guid><description>&lt;h1 id="how-to-face-the-investment-risk"&gt;How to face the investment risk?&lt;/h1&gt;&#10;&lt;p&gt;Investment risk is the expectation loss of our investment.&lt;/p&gt;&#10;&lt;p&gt;It is difficult to calculate the probability of loss sometimes, but we can assume that the loss have happened, then try to find out the reason of loss.&lt;/p&gt;&#10;&lt;p&gt;Before investing, we can try to answer the following two questions:&lt;/p&gt;&#10;&lt;h2 id="1what-cause-the-price-of-properties-fall-50"&gt;1.What cause the price of properties fall 50%?&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Liquidity risk&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Credit risk&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2how-will-you-do-if-the-price-fell-50"&gt;2.How will you do if the price fell 50%?&lt;/h2&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 to categorize our money</title><link>https://yh.timefriend.vip/post/other/howtoorganizemoney/</link><pubDate>Wed, 28 Apr 2021 23:25:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/howtoorganizemoney/</guid><description>&lt;h1 id="how-to-categorize-our-invest-money"&gt;How to categorize our invest money?&lt;/h1&gt;&#10;&lt;p&gt;I think sleep peacefully at in night is the most important thing when we do the investment. I don&amp;rsquo;t need to worry about that I can&amp;rsquo;t pay my next monthly rent for the apartment after investing.&lt;/p&gt;&#10;&lt;p&gt;I believe that to avoid wake up at midnight is categorize our money. We can divide our cash into four categories.&lt;/p&gt;&#10;&lt;p&gt;The first category is called daily cash, it used to pay our daily cost. Apparently this type of money can not be invested to high risk stocks, or we might wake up at midnight.&lt;/p&gt;</description></item><item><title>2021-04-14 Diary</title><link>https://yh.timefriend.vip/post/other/20210414diary/</link><pubDate>Wed, 14 Apr 2021 23:20:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/20210414diary/</guid><description>&lt;h1 id="2021-04-14-diary"&gt;2021-04-14 Diary&lt;/h1&gt;&#10;&lt;p&gt;While I was sitting on the chair searching on the internet, my little baby looked at me and was going to cry in the bedroom. I known he was tired and need to go to bed. So I close the Mac and going in the bedroom. When I clapped and open my hands to hold him, he laughed happily and came to me.&lt;/p&gt;&#10;&lt;p&gt;I held him to the bed, but as soon as he sit on the bed, he started to cry and crawled slowly to the bedside cupboard. I thought he may want to milk, but his mother was taking a bath. My little baby often milked before he go to bed.&lt;/p&gt;</description></item><item><title>Futures learning notes 001</title><link>https://yh.timefriend.vip/post/invest/futures001/</link><pubDate>Wed, 07 Apr 2021 22:40:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/invest/futures001/</guid><description>&lt;h1 id="futures-learning-notes-001"&gt;Futures learning notes 001&lt;/h1&gt;&#10;&lt;h2 id="futures"&gt;Futures&lt;/h2&gt;&#10;&lt;p&gt;Futures are derivate financial contract that obligate the parties to transact an asset at a predetermined future date and price.&lt;/p&gt;&#10;&lt;p&gt;The buyer must purchase or the seller must sell the underlying asset at the set price, regardless of the current market price at the expiration date.&lt;/p&gt;&#10;&lt;h2 id="futures-can-exchange-in-shanghai-futures-exchange"&gt;futures can exchange in Shanghai Futures Exchange&lt;/h2&gt;&#10;&lt;p&gt;Shanghai Futures Exchange can exchange follow futures:&lt;/p&gt;&#10;&lt;p&gt;Copper, Copper(BC), Lead, Zinc, Aluminium, Nickel, Tin&lt;/p&gt;</description></item><item><title>从个人角度的行业划分</title><link>https://yh.timefriend.vip/post/invest/someconceptininvest/</link><pubDate>Sun, 28 Mar 2021 00:48:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/invest/someconceptininvest/</guid><description>&lt;h1 id="从个人角度的行业划分"&gt;从个人角度的行业划分&lt;/h1&gt;&#10;&lt;h2 id="衣食住行"&gt;衣食住行&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;衣（必）：服装、个护&lt;/li&gt;&#10;&lt;li&gt;食（必）：农业、餐饮、&lt;/li&gt;&#10;&lt;li&gt;住（必）：房产、家电（+联网+智能）、&lt;/li&gt;&#10;&lt;li&gt;行：车、物流、公共交通&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="医师作息"&gt;医师作息&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;医疗：药品&lt;/li&gt;&#10;&lt;li&gt;教育：英语、搜索&lt;/li&gt;&#10;&lt;li&gt;工作：会议、办公耗材&lt;/li&gt;&#10;&lt;li&gt;休息&amp;amp;娱乐：&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Acceptance in meditation</title><link>https://yh.timefriend.vip/post/other/meditationacceptance/</link><pubDate>Sun, 21 Mar 2021 19:58:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/meditationacceptance/</guid><description>&lt;h1 id="acceptance-in-meditation"&gt;Acceptance in meditation&lt;/h1&gt;&#10;&lt;p&gt;&amp;ldquo;Bring your attention to your head and face, noticing all sensations and feeling here. And just trying to accept all the feelings and sensations, rather than trying to judge them or change them in any way.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;This pratice works for me and alleviates my tension headache significantly.&lt;/p&gt;</description></item><item><title>Tension headache</title><link>https://yh.timefriend.vip/post/other/tensionheadache/</link><pubDate>Sun, 14 Mar 2021 21:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/tensionheadache/</guid><description>&lt;h1 id="tension-headache"&gt;Tension headache&lt;/h1&gt;&#10;&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;&#10;&lt;p&gt;Signs and symptoms of a tension headache include:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Dull, aching head pain&lt;/li&gt;&#10;&lt;li&gt;Sensation of tightness or pressure across your forehead or on the sides and back of your head&lt;/li&gt;&#10;&lt;li&gt;Tenderness on your scalp, neck and shoulder muscles&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Tension headaches are divided into two main categories — episodic and chronic.&lt;/p&gt;&#10;&lt;h3 id="episodic-tension-headaches"&gt;Episodic tension headaches&lt;/h3&gt;&#10;&lt;p&gt;Episodic tension headaches can last from 30 minutes to a week. Frequent episodic tension headaches occur less than 15 days a month for at least three months. Frequent episodic tension headaches may become chronic.&lt;/p&gt;</description></item><item><title>高等数学主要内容</title><link>https://yh.timefriend.vip/post/math/contentofadvancedmathematics/</link><pubDate>Sun, 07 Mar 2021 20:14:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/math/contentofadvancedmathematics/</guid><description>&lt;h1 id="高等数学主要内容"&gt;高等数学主要内容&lt;/h1&gt;&#10;&lt;h2 id="一空间解析几何与向量代数"&gt;一、空间解析几何与向量代数&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;空间直角坐标系&lt;/li&gt;&#10;&lt;li&gt;向量的概念及其线性；&lt;/li&gt;&#10;&lt;li&gt;向量坐标、向量的数量积；&lt;/li&gt;&#10;&lt;li&gt;平面方程、直线方程；&lt;/li&gt;&#10;&lt;li&gt;曲面方程、曲线方程；&lt;/li&gt;&#10;&lt;li&gt;二次曲面；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="二多元函数的微分学"&gt;二、多元函数的微分学&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;二元函数的极限与连续；&lt;/li&gt;&#10;&lt;li&gt;【重点】偏导数；&lt;/li&gt;&#10;&lt;li&gt;高阶偏导数；&lt;/li&gt;&#10;&lt;li&gt;全微分；&lt;/li&gt;&#10;&lt;li&gt;复合函数求导法则；&lt;/li&gt;&#10;&lt;li&gt;隐函数求导法则；&lt;/li&gt;&#10;&lt;li&gt;空间曲线的切线与法平面、曲面的切平面与法线；&lt;/li&gt;&#10;&lt;li&gt;二元函数的极值；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="三重积分"&gt;三、重积分&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;二重积分和三重积分的定义与性质；&lt;/li&gt;&#10;&lt;li&gt;二重积分的计算；&lt;/li&gt;&#10;&lt;li&gt;三重积分的计算；&lt;/li&gt;&#10;&lt;li&gt;重积分的应用：曲面面积、曲顶柱体的体积、平面薄板的质量；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="四曲线积分与曲面积分"&gt;四、曲线积分与曲面积分&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;对弧长曲线积分，对坐标的曲线积分的性质；&lt;/li&gt;&#10;&lt;li&gt;两类曲线积分的计算；&lt;/li&gt;&#10;&lt;li&gt;平面曲线积分与路径无关的条件&lt;/li&gt;&#10;&lt;li&gt;两类曲面积分的定义与性质&lt;/li&gt;&#10;&lt;li&gt;两类曲面积分的计算；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="五常微分方程"&gt;五、常微分方程&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;微分方程的一般概念&lt;/li&gt;&#10;&lt;li&gt;三类一阶微分方程；&lt;/li&gt;&#10;&lt;li&gt;三类可降阶的二阶微分方程；&lt;/li&gt;&#10;&lt;li&gt;二阶线性微分方程解的结构；&lt;/li&gt;&#10;&lt;li&gt;二阶常系数线性齐次微分方程；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="六无穷级数"&gt;六、无穷级数&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;数项级数的概念与性质；&lt;/li&gt;&#10;&lt;li&gt;正项级数及其审敛法；&lt;/li&gt;&#10;&lt;li&gt;一般项级数的审敛法；&lt;/li&gt;&#10;&lt;li&gt;幂级数的收敛性和函数性质；&lt;/li&gt;&#10;&lt;li&gt;函数的仄勒级数展开式；&lt;/li&gt;&#10;&lt;li&gt;傅里叶级数；&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>高等数学主要内容</title><link>https://yh.timefriend.vip/post/other/contentofadvancedmathematics/</link><pubDate>Sun, 07 Mar 2021 20:14:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/contentofadvancedmathematics/</guid><description>&lt;h1 id="高等数学主要内容"&gt;高等数学主要内容&lt;/h1&gt;&#10;&lt;h2 id="一空间解析几何与向量代数"&gt;一、空间解析几何与向量代数&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;空间直角坐标系&lt;/li&gt;&#10;&lt;li&gt;向量的概念及其线性；&lt;/li&gt;&#10;&lt;li&gt;向量坐标、向量的数量积；&lt;/li&gt;&#10;&lt;li&gt;平面方程、直线方程；&lt;/li&gt;&#10;&lt;li&gt;曲面方程、曲线方程；&lt;/li&gt;&#10;&lt;li&gt;二次曲面；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="二多元函数的微分学"&gt;二、多元函数的微分学&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;二元函数的极限与连续；&lt;/li&gt;&#10;&lt;li&gt;【重点】偏导数；&lt;/li&gt;&#10;&lt;li&gt;高阶偏导数；&lt;/li&gt;&#10;&lt;li&gt;全微分；&lt;/li&gt;&#10;&lt;li&gt;复合函数求导法则；&lt;/li&gt;&#10;&lt;li&gt;隐函数求导法则；&lt;/li&gt;&#10;&lt;li&gt;空间曲线的切线与法平面、曲面的切平面与法线；&lt;/li&gt;&#10;&lt;li&gt;二元函数的极值；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="三重积分"&gt;三、重积分&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;二重积分和三重积分的定义与性质；&lt;/li&gt;&#10;&lt;li&gt;二重积分的计算；&lt;/li&gt;&#10;&lt;li&gt;三重积分的计算；&lt;/li&gt;&#10;&lt;li&gt;重积分的应用：曲面面积、曲顶柱体的体积、平面薄板的质量；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="四曲线积分与曲面积分"&gt;四、曲线积分与曲面积分&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;对弧长曲线积分，对坐标的曲线积分的性质；&lt;/li&gt;&#10;&lt;li&gt;两类曲线积分的计算；&lt;/li&gt;&#10;&lt;li&gt;平面曲线积分与路径无关的条件&lt;/li&gt;&#10;&lt;li&gt;两类曲面积分的定义与性质&lt;/li&gt;&#10;&lt;li&gt;两类曲面积分的计算；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="五常微分方程"&gt;五、常微分方程&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;微分方程的一般概念&lt;/li&gt;&#10;&lt;li&gt;三类一阶微分方程；&lt;/li&gt;&#10;&lt;li&gt;三类可降阶的二阶微分方程；&lt;/li&gt;&#10;&lt;li&gt;二阶线性微分方程解的结构；&lt;/li&gt;&#10;&lt;li&gt;二阶常系数线性齐次微分方程；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="六无穷级数"&gt;六、无穷级数&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;数项级数的概念与性质；&lt;/li&gt;&#10;&lt;li&gt;正项级数及其审敛法；&lt;/li&gt;&#10;&lt;li&gt;一般项级数的审敛法；&lt;/li&gt;&#10;&lt;li&gt;幂级数的收敛性和函数性质；&lt;/li&gt;&#10;&lt;li&gt;函数的仄勒级数展开式；&lt;/li&gt;&#10;&lt;li&gt;傅里叶级数；&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Laravel配置阿里云企业邮箱</title><link>https://yh.timefriend.vip/post/php/aliyunmailconfig/</link><pubDate>Sun, 28 Feb 2021 23:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/php/aliyunmailconfig/</guid><description>&lt;h1 id="laravel配置阿里云企业邮箱"&gt;Laravel配置阿里云企业邮箱&lt;/h1&gt;&#10;&lt;p&gt;企业邮箱POP、SMTP、IMAP地址列表如下：&lt;/p&gt;&#10;&lt;p&gt;（阿里云邮箱web端通用访问地址：https://qiye.aliyun.com/），客户端推荐以下参数配置：&lt;/p&gt;</description></item><item><title>How to persuade people using motivational interviewing?</title><link>https://yh.timefriend.vip/post/other/persuade/</link><pubDate>Sat, 20 Feb 2021 23:19:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/persuade/</guid><description>&lt;h1 id="how-to-persuade-people-using-motivational-interviewing"&gt;How to persuade people using motivational interviewing?&lt;/h1&gt;&#10;&lt;p&gt;Imaging a person that you want to advise him/her to do or not to do something.&lt;/p&gt;&#10;&lt;p&gt;I image I was advising my wife to sleep earlier, because she take care our baby at home and often sleep too late.&lt;/p&gt;&#10;&lt;h2 id="1-ask-her-an-open-question-about-the-behaviour"&gt;1. Ask her an open question about the behaviour?&lt;/h2&gt;&#10;&lt;p&gt;For example, “Why you do that? I would like to hear how to you think that sincerely?”&lt;/p&gt;</description></item><item><title>The past five days</title><link>https://yh.timefriend.vip/post/other/pastfivedays/</link><pubDate>Sun, 14 Feb 2021 19:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/pastfivedays/</guid><description>&lt;h1 id="the-past-five-days"&gt;The past five days&lt;/h1&gt;&#10;&lt;p&gt;I have been working every day for the past five days.&lt;/p&gt;&#10;&lt;p&gt;My plan is:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;day1: set up the development enviroment and finish login page; # interface1: login [done]&lt;/li&gt;&#10;&lt;li&gt;day2: finish home page layout and choose a image from backend; # interface7: getImages; [part done]&lt;/li&gt;&#10;&lt;li&gt;day3: load a image and texts; # interface8: getTextList; [done]&lt;/li&gt;&#10;&lt;li&gt;day4: drag text by mouse, assign the text size and color; [part done]&lt;/li&gt;&#10;&lt;li&gt;day5: finish font style plug in, load the setting text style;&lt;/li&gt;&#10;&lt;li&gt;day6: interface: save style interface;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The reality is:&lt;/p&gt;</description></item><item><title>Why do I see it a burden</title><link>https://yh.timefriend.vip/post/other/whydoiseeitaburden/</link><pubDate>Sun, 07 Feb 2021 22:29:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/whydoiseeitaburden/</guid><description>&lt;h1 id="why-do-i-see-it-a-burden"&gt;Why do I see it a burden?&lt;/h1&gt;&#10;&lt;h2 id="1the-whole-story"&gt;1.The whole story&lt;/h2&gt;&#10;&lt;p&gt;My friend asked me for a help recently. If I promise him, it would take me at least a week to finish the task which I can spend to improve my skill and prepare for the examination on April.&lt;/p&gt;&#10;&lt;p&gt;The task is to build a website to collect data which is important for him because he needs the data for research.&lt;/p&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>How to Read a Image in Python</title><link>https://yh.timefriend.vip/post/python/pythonreadimage/</link><pubDate>Sat, 23 Jan 2021 11:26:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/python/pythonreadimage/</guid><description>&lt;h1 id="how-to-read-a-image-in-python"&gt;How to Read a Image in Python&lt;/h1&gt;&#10;&lt;p&gt;There are three ways to read a image, the codes is showing below.&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;image_path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;fasterRCNN/faster-rcnn-keras-master/img/street.jpg&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:#ff79c6"&gt;from&lt;/span&gt; PIL &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; Image&#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;image &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Image&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;open(image_path) &lt;span style="color:#6272a4"&gt;# RGB&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tmp_image &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(image)&#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;PIL open shape:&amp;#34;&lt;/span&gt;,tmp_image&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape, tmp_image)&#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;# load with cv2&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&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;image &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cv2&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imread(image_path) &lt;span style="color:#6272a4"&gt;# mode: BGR&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;cv2 imread shape:&amp;#34;&lt;/span&gt;, image&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape) &lt;span style="color:#6272a4"&gt;# (width,height,channel)&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;# load with matplotlib&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; matplotlib.image &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; mpimg&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;image &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; mpimg&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;imread(image_path) &lt;span style="color:#6272a4"&gt;# mode: RGB&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;matplotlib imread shape:&amp;#34;&lt;/span&gt;,image&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape, image) &lt;span style="color:#6272a4"&gt;# ( height, width,channel(RGB) )&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you use &lt;code&gt;cv2&lt;/code&gt; to load a image , then show it with &lt;code&gt;matplotlib&lt;/code&gt;, you should convert the image to &lt;code&gt;RGB&lt;/code&gt; mode, this is because cv2 read a image in &lt;code&gt;BGR&lt;/code&gt; mode, while &lt;code&gt;matplotlib&lt;/code&gt; presents the image in &lt;code&gt;RGB&lt;/code&gt; mode;&lt;/p&gt;</description></item><item><title>Differences On Numpyp.Floor And Python Int method.md</title><link>https://yh.timefriend.vip/post/python/differencesonnpfloorandint/</link><pubDate>Thu, 31 Dec 2020 12:35:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/python/differencesonnpfloorandint/</guid><description>&lt;h1 id="differences-on-numpypfloor-and-python-int-methodmd"&gt;Differences On Numpyp.Floor And Python Int method.md&lt;/h1&gt;&#10;&lt;p&gt;&lt;code&gt;numpy.floor&lt;/code&gt; Return the floor of the input.&lt;/p&gt;&#10;&lt;p&gt;The floor of the scalar x is the largest integer i, such that i &amp;lt;= x;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;np.floor()&lt;/code&gt; will not change its data type;&lt;/p&gt;&#10;&lt;p&gt;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;&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;tmp_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;list&lt;/span&gt;([&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3.3&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2.22&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1.56&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;0.56&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.56&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1.56&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;2.22&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3.33&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;tmp_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;array(tmp_list)&#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;type(tmp_list[0]):&amp;#34;&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;(tmp_list[&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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;type(np.floor(tmp_list)[0]):&amp;#34;&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;(np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;floor(tmp_list)[&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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;np.floor(tmp_list):&amp;#34;&lt;/span&gt;, np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;floor(tmp_list))&#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;# type(tmp_list[0]): &amp;lt;class &amp;#39;numpy.float64&amp;#39;&amp;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;# type(np.floor(tmp_list)[0]): &amp;lt;class &amp;#39;numpy.float64&amp;#39;&amp;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;# np.floor(tmp_list): [-4. -3. -2. -1. 0. 1. 2. 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;&#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; x &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; tmp_list:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;x:&amp;#34;&lt;/span&gt;,x,&lt;span style="color:#f1fa8c"&gt;&amp;#34;,int:&amp;#34;&lt;/span&gt;,&lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(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;&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: -3.3 ,int: -3&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: -2.22 ,int: -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;# x: -1.56 ,int: -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;# x: -0.56 ,int: 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;# x: 0.56 ,int: 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;# x: 1.56 ,int: 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;# x: 2.22 ,int: 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;# x: 3.33 ,int: 3&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For floating point numbers, &lt;code&gt;int()&lt;/code&gt; will truncates toward zero, so &lt;code&gt;-0.1&lt;/code&gt; will by truncate to &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;-1.8&lt;/code&gt; to &lt;code&gt;-1&lt;/code&gt;; And its data type will be changed to &lt;code&gt;&amp;lt;class 'int'&amp;gt;&lt;/code&gt;.&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 does numpy add two arrays with different shapes?</title><link>https://yh.timefriend.vip/post/python/numpyadd/</link><pubDate>Sun, 27 Dec 2020 19:54:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/python/numpyadd/</guid><description>&lt;h1 id="how-does-numpy-add-two-arrays-with-different-shapes"&gt;How does numpy add two arrays with different shapes?&lt;/h1&gt;&#10;&lt;p&gt;Numpy has a &lt;code&gt;add&lt;/code&gt; method which add two numpy array.&lt;/p&gt;&#10;&lt;p&gt;Arithmetic operation &lt;code&gt;+&lt;/code&gt; does the same thing as &lt;code&gt;Numpy.add&lt;/code&gt;;&lt;/p&gt;&#10;&lt;h2 id="1add-a-same-shapes-array"&gt;1.Add a same shapes array&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s see a 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;&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;list1 &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;list2&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;10&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;20&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;&#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;list1:&amp;#34;&lt;/span&gt;,list1,&lt;span style="color:#f1fa8c"&gt;&amp;#34;list2:&amp;#34;&lt;/span&gt;,list2);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Print: list1: [1 2 3] list2: [10 20 30]&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;added_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; list1 &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; list2;&#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;added_list.shape:&amp;#34;&lt;/span&gt;,added_list&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape,&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;added_list:&amp;#34;&lt;/span&gt;,added_list);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Print:&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;# added_list.shape: (3,) &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;# added_list: [11 22 33]&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;added_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(list1, list2);&#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;added_list.shape:&amp;#34;&lt;/span&gt;,added_list&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape,&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;added_list:&amp;#34;&lt;/span&gt;,added_list);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Print:&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;# added_list.shape: (3,) &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;# added_list: [11 22 33]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2add-a-different-shape-array"&gt;2.Add a different shape array&lt;/h2&gt;&#10;&lt;p&gt;But what happen if two array have different shapes?&lt;/p&gt;</description></item><item><title>Understanding Transpose</title><link>https://yh.timefriend.vip/post/python/numpytranspose/</link><pubDate>Tue, 22 Dec 2020 19:55:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/python/numpytranspose/</guid><description>&lt;h1 id="understanding-numpy-transpose"&gt;Understanding Numpy Transpose&lt;/h1&gt;&#10;&lt;p&gt;1.Transpose is to switch the row and column indices of the matrix A;&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;x &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;arange(&lt;span style="color:#bd93f9"&gt;8&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;reshape((&lt;span style="color:#bd93f9"&gt;4&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;(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;(x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T)&#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;# [[0 1] # x&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 3]&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;# [4 5]&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 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;# [[0 2 4 6] # x.T&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 3 5 7]]&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;arange(&lt;span style="color:#bd93f9"&gt;9&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;reshape((&lt;span style="color:#bd93f9"&gt;3&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;(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;(x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T)&#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;(x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;shape, x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T&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;# 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;# [[0 1 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;# [3 4 5]&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 7 8]]&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 3 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;# [1 4 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;# [2 5 8]]&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;arange(&lt;span style="color:#bd93f9"&gt;8&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;reshape((&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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(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;(x&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;T)&#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;# [[0 1 2 3]&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;# [4 5 6 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;# [[0 4]&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 5]&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 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;# [3 7]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the array has only one dimension, the transpose of the array will not change;&lt;/p&gt;</description></item><item><title>What do `*args` and `**kwargs` mean in python function?</title><link>https://yh.timefriend.vip/post/python/pythonargkwarg/</link><pubDate>Tue, 15 Dec 2020 23:21:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/python/pythonargkwarg/</guid><description>&lt;h1 id="what-do-args-and-kwargs-mean-in-python-function"&gt;What do &lt;code&gt;*args&lt;/code&gt; and &lt;code&gt;**kwargs&lt;/code&gt; mean in python function?&lt;/h1&gt;&#10;&lt;p&gt;&lt;code&gt;*args&lt;/code&gt; means we can pass an arbitrary number of arguments to the function;&lt;/p&gt;&#10;&lt;p&gt;Similarly, &lt;code&gt;**kwargs&lt;/code&gt; allow we pass many &lt;code&gt;key=value&lt;/code&gt; argument to the function;&lt;/p&gt;&#10;&lt;h2 id="args"&gt;&lt;code&gt;*args&lt;/code&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;*args&lt;/code&gt; iterable:&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;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;my_sum&lt;/span&gt;(&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;args):&#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:#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:#6272a4"&gt;# Iterating over the Python args tuple&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; x &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; args:&#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; 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; result&#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;(my_sum(&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:#6272a4"&gt;# output: 6&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;*&lt;/code&gt; is a unpacking operator;&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;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;print_three_things&lt;/span&gt;(a, b, c):&#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;#39;a = &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{0}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, b = &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{1}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, c = &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{2}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;format(a,b,c))&#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;mylist &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#39;aardvark&amp;#39;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;baboon&amp;#39;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;cat&amp;#39;&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print_three_things(&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;mylist)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# output: a = aardvark, b = baboon, c = cat&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="kwargs-example"&gt;&lt;code&gt;**kwargs&lt;/code&gt; example&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;**kwargs&lt;/code&gt; iterable:&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>Understanding Numpy expand_dims</title><link>https://yh.timefriend.vip/post/python/numpy_shape_expand_dim/</link><pubDate>Mon, 30 Nov 2020 19:55:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/python/numpy_shape_expand_dim/</guid><description>&lt;h1 id="understanding-numpy-expand_dims"&gt;Understanding Numpy expand_dims&lt;/h1&gt;&#10;&lt;p&gt;Shape &lt;code&gt;(n,)&lt;/code&gt;(n is a number) means it has only one dimension.&lt;/p&gt;&#10;&lt;p&gt;The number of values is shape brackets represents the number of dimensions.&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; 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;arr &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;4&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;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;arr shape: &amp;#34;&lt;/span&gt;,arr&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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;arr shape: &amp;#34;&lt;/span&gt;,arr)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;arr2 &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;expand_dims(arr, &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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;expand_dims axis=0, shape:&amp;#34;&lt;/span&gt;,arr2&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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;expand_dims axis=0, arr2:&amp;#34;&lt;/span&gt;,arr2)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;arr2 &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;expand_dims(arr, &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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;expand_dims axis=1, shape:&amp;#34;&lt;/span&gt;,arr2&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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;expand_dims axis=1, arr2:&amp;#34;&lt;/span&gt;,arr2)&#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;arr shape: (5,) &#10;arr shape: [1 2 3 4 5]&#10;expand_dims axis=0, shape: (1, 5)&#10;expand_dims axis=0, arr2: [[1 2 3 4 5]]&#10;expand_dims axis=1, shape: (5, 1)&#10;expand_dims axis=1, arr2: [[1]&#10; [2]&#10; [3]&#10; [4]&#10; [5]]&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="numpyexpand_dims"&gt;numpy.expand_dims&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;expand_dims&lt;/code&gt; looks like inserting 1 into the shape brackets base on the axis value;&lt;/p&gt;</description></item><item><title>Sed</title><link>https://yh.timefriend.vip/post/linux/sed/</link><pubDate>Sat, 28 Nov 2020 21:42:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/linux/sed/</guid><description>&lt;h1 id="sed"&gt;Sed&lt;/h1&gt;&#10;&lt;p&gt;sed is a steam editor. sed treats multiple input files as one long stream.&lt;/p&gt;&#10;&lt;p&gt;The full format for invoking sed is:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;sed OPTIONS... [SCRIPT] [INPUTFILE...]&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Some common OPTIONS:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;-n&lt;/code&gt; to suppress output, &lt;code&gt;sed -n '45p' file.txt&lt;/code&gt; this command prints only line 45 of input file;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;-e&lt;/code&gt; options are used to specify a script expression, such as &lt;code&gt;sed -e 's/hello/world/' input.txt &amp;gt; output.txt&lt;/code&gt;;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;-f&lt;/code&gt; specify a script file, such as &lt;code&gt;sed -f myscript.sed input.txt &amp;gt; output.txt&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Simple Tree command</title><link>https://yh.timefriend.vip/post/other/treeafolder/</link><pubDate>Sat, 28 Nov 2020 10:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/treeafolder/</guid><description>&lt;h1 id="simple-tree-command"&gt;Simple Tree command&lt;/h1&gt;&#10;&lt;p&gt;Using the follow command can view current folder tree:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;find . -print| sed -e &amp;#39;s;[^/]*/;|____;g;s;____|; |;g&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;output&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ find . -print| sed -e &amp;#39;s;[^/]*/;|____;g;s;____|; |;g&amp;#39;&#10;.&#10;|____composer.lock&#10;|____LICENSE&#10;|____README.md&#10;|____.gitignore&#10;|____build-phar.php&#10;|____.git&#10;| |____config&#10;| |____objects&#10;...&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Below command only descend at most 2 directory levels:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;find . -maxdepth 2 -e -print | sed -e &amp;#39;s;[^/]*/;|____;g;s;____|; |;g&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;REFERENCE&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://osxdaily.com/2016/09/09/view-folder-tree-terminal-mac-os-tree-equivalent/"&gt;Using a Mac Equivalent of Unix “tree” Command to View Folder Trees at Terminal&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Categorical Crossentropy源码分析</title><link>https://yh.timefriend.vip/post/machinelearning/losscategoricalcrossentropy/</link><pubDate>Wed, 25 Nov 2020 22:48:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/losscategoricalcrossentropy/</guid><description>&lt;h1 id="categorical-crossentropy源码分析"&gt;Categorical Crossentropy源码分析&lt;/h1&gt;&#10;&lt;p&gt;Source:&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;&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;sess &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;InteractiveSession()&#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;--------output-----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;constant([&lt;span style="color:#bd93f9"&gt;1.&lt;/span&gt;, &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;, &lt;span style="color:#bd93f9"&gt;1.&lt;/span&gt;, &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;, &lt;span style="color:#bd93f9"&gt;1.&lt;/span&gt;], shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;[&lt;span style="color:#bd93f9"&gt;3&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;target: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;,target&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;eval())&#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; tf&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;constant([&lt;span style="color:#bd93f9"&gt;.9&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.05&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.05&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.05&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.89&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.06&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.05&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.01&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;.94&lt;/span&gt;], shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;[&lt;span style="color:#bd93f9"&gt;3&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;output:&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; &amp;#34;&lt;/span&gt;,output&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;eval())&#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;loss &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;backend&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;categorical_crossentropy(target, 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;loss: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;,loss&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;eval()) &lt;span style="color:#6272a4"&gt;# Output: [0.10536 0.11653 0.06188]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://www.tensorflow.org/api_docs/python/tf/keras/backend/categorical_crossentropy"&gt;官方文档categorical_crossentropy&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Output:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--------output-----------&#10;target: &#10; [[1. 0. 0.]&#10; [0. 1. 0.]&#10; [0. 0. 1.]]&#10;output:&#10; [[0.9 0.05 0.05]&#10; [0.05 0.89 0.06]&#10; [0.05 0.01 0.94]]&#10;loss: &#10; [0.10536055 0.11653383 0.06187541]&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;问：输出中最后一行，loss第一个值&lt;code&gt;0.10536055&lt;/code&gt;是什么得到的？&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>Config Github with SSH</title><link>https://yh.timefriend.vip/post/other/sshgit/</link><pubDate>Fri, 20 Nov 2020 12:41:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/sshgit/</guid><description>&lt;h1 id="config-github-with-ssh"&gt;Config Github with SSH&lt;/h1&gt;&#10;&lt;h2 id="generating-a-new-ssh-key"&gt;Generating a new SSH key&lt;/h2&gt;&#10;&lt;p&gt;1.Open TerminalTerminalGit Bash.&lt;/p&gt;&#10;&lt;p&gt;2.Paste the text below, substituting in your GitHub email address.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ ssh-keygen -t ed25519 -C &amp;#34;your_email@example.com&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;3.Then you&amp;rsquo;re prompted to do something, press Enter.&lt;/p&gt;&#10;&lt;p&gt;Then the keys will be saved under &lt;code&gt;~/.ssh&lt;/code&gt; folder.&lt;/p&gt;&#10;&lt;p&gt;You can use &lt;code&gt;ls -al ~/.ssh&lt;/code&gt; command to see them.&lt;/p&gt;&#10;&lt;p&gt;LOG:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ ssh-keygen -t ed25519 -C &amp;#34;my_email@example.com&amp;#34;&#10;Generating public/private ed25519 key pair.&#10;Enter file in which to save the key (/c/Users/myusername/.ssh/id_ed25519):&#10;Enter passphrase (empty for no passphrase):&#10;Enter same passphrase again:&#10;Your identification has been saved in /c/Users/myusername/.ssh/id_ed25519.&#10;Your public key has been saved in /c/Users/myusername/.ssh/id_ed25519.pub.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="config-github-key"&gt;Config github key&lt;/h2&gt;&#10;&lt;p&gt;Copy gitbash:&lt;/p&gt;</description></item><item><title>Quickly host your hugo web on Gitlab</title><link>https://yh.timefriend.vip/post/other/hugoblogdeployongitlab/</link><pubDate>Thu, 19 Nov 2020 13:41:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/hugoblogdeployongitlab/</guid><description>&lt;h1 id="quickly-host-your-hugo-web-on-gitlab"&gt;Quickly host your hugo web on Gitlab&lt;/h1&gt;&#10;&lt;p&gt;Quickly host your hugo web on gitlab.&lt;/p&gt;&#10;&lt;h2 id="1login-gitlab"&gt;1.Login gitlab&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://gitlab.com/users/sign_in"&gt;Gitlab&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="2click-new-project-after-login"&gt;2.click &lt;code&gt;new project&lt;/code&gt; after login&lt;/h2&gt;&#10;&lt;p&gt;Click &lt;code&gt;Create from template&lt;/code&gt; in &lt;code&gt;Create new project&lt;/code&gt; and use &amp;ldquo;Hugo template&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://yh.timefriend.vip/img/other/gitlab_createproject.jpg" alt="Gitlab"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this example, my project name is: &lt;code&gt;testPage&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Now you can see your username on &lt;code&gt;Project URL&lt;/code&gt;, for example, mine is &lt;code&gt;https://gitlab.com/RhysYao/&lt;/code&gt;, and username is &lt;code&gt;RhysYao&lt;/code&gt; which will be used later.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://yh.timefriend.vip/img/other/gitlab_create_from_template.jpg" alt="Create from template on Gitlab"&gt;&lt;/p&gt;</description></item><item><title>telnet</title><link>https://yh.timefriend.vip/post/network/telnet/</link><pubDate>Wed, 18 Nov 2020 19:40:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/network/telnet/</guid><description>&lt;h1 id="telnet"&gt;Telnet&lt;/h1&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;telnet host post&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;示例：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[yaohong@host ~]# telnet www.baidu.com 80&#10;Trying 14.215.177.38...&#10;Connected to www.baidu.com.&#10;Escape character is &amp;#39;^]&amp;#39;.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;出现&lt;code&gt;Connected to&lt;/code&gt;表示连接上主机；&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[yaohong@host ~]# telnet www.baidu.com 882&#10;Trying 14.215.177.38...&#10;telnet: connect to address 14.215.177.38: Connection timed out&#10;Trying 14.215.177.39...&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;没有出现&lt;code&gt;Connected to&lt;/code&gt;表示未连接成功。&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>Understand limits to infinity</title><link>https://yh.timefriend.vip/post/math/limitstoinfinity/</link><pubDate>Thu, 29 Oct 2020 07:57:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/math/limitstoinfinity/</guid><description>&lt;h1 id="understanding-limits-to-infinity"&gt;Understanding limits to infinity&lt;/h1&gt;&#10;&lt;p&gt;When &lt;code&gt;x-&amp;gt;∞&lt;/code&gt;, what is the exact number of x?&lt;/p&gt;&#10;&lt;p&gt;We don&amp;rsquo;t know, x is undefined.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;∞&lt;/code&gt; is not a number, is a idea of having a greater number than you give.&lt;/p&gt;&#10;&lt;p&gt;When &lt;code&gt;x-&amp;gt;∞&lt;/code&gt;, &lt;code&gt;1/x&lt;/code&gt; appoachs zero, but is never equal zero!&lt;/p&gt;&#10;&lt;p&gt;When &lt;code&gt;n -&amp;gt; ∞&lt;/code&gt;, does &lt;code&gt;sin(1/n) / (1/n)&lt;/code&gt; have meaning?&lt;/p&gt;&#10;&lt;p&gt;I used to thought &lt;code&gt;1/n = 0&lt;/code&gt; while &lt;code&gt;n-&amp;gt;∞&lt;/code&gt;, but 0 cannot be divided, So I was confused.&lt;/p&gt;</description></item><item><title>SSLCertVerificationError报错</title><link>https://yh.timefriend.vip/post/python/sslcertverificationerror/</link><pubDate>Wed, 28 Oct 2020 23:21:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/python/sslcertverificationerror/</guid><description>&lt;h1 id="sslcertverificationerror报错"&gt;SSLCertVerificationError报错&lt;/h1&gt;&#10;&lt;p&gt;Error:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Solution:&#10;环境：Mac&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;Macintosh HD &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; Applications &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; Python3&lt;span style="color:#bd93f9"&gt;.6&lt;/span&gt; (或者其它安装python目录）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;然后：双击 Install Certificates&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;command&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Double click &lt;code&gt;Install Certificates.command&lt;/code&gt; log:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;The default interactive shell is now zsh.&#10;To update your account to use zsh, please run `chsh -s /bin/zsh`.&#10;For more details, please visit https://support.apple.com/kb/HT208050.&#10;/Applications/Python\ 3.7/Install\ Certificates.command ; exit;&#10;macdeMacBook-Air-5:~ Rhys$ /Applications/Python\ 3.7/Install\ Certificates.command ; exit;&#10; -- pip install --upgrade certifi&#10;Requirement already up-to-date: certifi in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (2020.6.20)&#10;WARNING: You are using pip version 20.1.1; however, version 20.2.4 is available.&#10;You should consider upgrading via the &amp;#39;/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 -m pip install --upgrade pip&amp;#39; command.&#10; -- removing any existing file or link&#10; -- creating symlink to certifi certificate bundle&#10; -- setting permissions&#10; -- update complete&#10;logout&#10;Saving session...&#10;...copying shared history...&#10;...saving history...truncating history files...&#10;...completed.&#10;Deleting expired sessions...68 completed.&#10;&#10;[Process completed]&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Double click &lt;code&gt;Update Shell Profile.command&lt;/code&gt; log:&lt;/p&gt;</description></item><item><title>简单的图像加宽和截取类</title><link>https://yh.timefriend.vip/post/machinelearning/imageutils/</link><pubDate>Mon, 26 Oct 2020 20:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/imageutils/</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;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;ImageUtils&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;__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;&#9;&#9;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; numpy;&#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;np &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;&#9;&#9;&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;&#9;&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;&#9;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;resizePadding&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, np_2d_image, target_width,target_height):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;single_img &#9;&#9;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np_2d_image;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;tmp_img_width &#9;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; single_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;&#9;&#9;tmp_img_height &#9;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; single_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;&#9;&#9;np &#9;&#9;&#9;&#9;&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;np&#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;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;resizeFile origin shape :&amp;#34;&lt;/span&gt;,single_img&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;&#9;&#9;&lt;span style="color:#6272a4"&gt;# 宽度pading添加&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; tmp_img_width &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt; target_width:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; x &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(tmp_img_width, target_width):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&lt;span style="color:#6272a4"&gt;# tmp_arr = np.arange(255,255,(len(single_img),1));&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; x&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;0&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(single_img, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;,axis&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;&#9;&#9;&#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;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(single_img, single_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:#bd93f9"&gt;255&lt;/span&gt;,axis&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;&#9;&#9;&#9;&#9;&lt;span style="color:#6272a4"&gt;# print(file_name_prefix, &amp;#34;origin shape :&amp;#34;,single_img.shape)&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:#6272a4"&gt;# 高度pading添加&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; tmp_img_height &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt; target_height:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; x &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(tmp_img_height, target_height):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&lt;span style="color:#6272a4"&gt;# tmp_arr = np.arange(255,255,(len(single_img),1));&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; x&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;0&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(single_img, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;,axis&lt;span style="color:#ff79c6"&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;&#9;&#9;&#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;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(single_img, single_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:#bd93f9"&gt;255&lt;/span&gt;,axis&lt;span style="color:#ff79c6"&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;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&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;&#9;&#9;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; tmp_img_width &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; target_width:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; x &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(target_width, tmp_img_width):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; x&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;0&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;delete(single_img, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, axis&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;&#9;&#9;&#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;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;delete(single_img, single_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;1&lt;/span&gt;, axis&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;&#9;&#9;&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;&#9;&#9;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; tmp_img_height &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; target_height:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; x &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;range&lt;/span&gt;(target_height, tmp_img_height):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; x&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;0&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;delete(single_img, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, axis&lt;span style="color:#ff79c6"&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;&#9;&#9;&#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;&#9;&#9;single_img &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; np&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;delete(single_img, single_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;1&lt;/span&gt;, axis&lt;span style="color:#ff79c6"&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;&#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:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;resizeFile after shape :&amp;#34;&lt;/span&gt;,single_img&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;&#9;&#9;&lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; single_img;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&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>一条微信消息在网络层的历程</title><link>https://yh.timefriend.vip/post/network/%E4%B8%80%E6%9D%A1%E5%BE%AE%E4%BF%A1%E6%B6%88%E6%81%AF%E7%9A%84%E5%8E%86%E7%A8%8B/</link><pubDate>Wed, 14 Oct 2020 20:40:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/network/%E4%B8%80%E6%9D%A1%E5%BE%AE%E4%BF%A1%E6%B6%88%E6%81%AF%E7%9A%84%E5%8E%86%E7%A8%8B/</guid><description>&lt;h1 id="一条微信消息在网络层的历程"&gt;一条微信消息在网络层的历程&lt;/h1&gt;&#10;&lt;p&gt;当我们向朋友发送一条微信文字消息时，我们的操作仅仅是让手机连上网，通过连接WIFI或使用移动网络，然后在手机上打字“明天跑步去吗？”，最后点击发送按钮。&lt;/p&gt;</description></item><item><title>PHP autoload</title><link>https://yh.timefriend.vip/post/php/phpautoload/</link><pubDate>Fri, 14 Aug 2020 20:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/php/phpautoload/</guid><description>&lt;h1 id="php-autoload"&gt;php autoload&lt;/h1&gt;&#10;&lt;p&gt;In general, when we use a file which not include in current file, we need to load it in current file by using &lt;code&gt;require&lt;/code&gt; or &lt;code&gt;include&lt;/code&gt;;&lt;/p&gt;&#10;&lt;p&gt;But when a project has a lot of php files, it is not a good way to include each file manually.&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s see a simple code:&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-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;&amp;lt;?&lt;/span&gt;php&#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;$person&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;new&lt;/span&gt; Person(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Rhys&amp;#34;&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;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;var_dump(&lt;span style="color:#8be9fd;font-style:italic"&gt;$person&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There is a new class &lt;code&gt;Person&lt;/code&gt; which didn&amp;rsquo;t be load in current file. In this case, php will call default autoload method　&lt;code&gt;spl_autoload()&lt;/code&gt; in order to load possible class;&lt;/p&gt;</description></item><item><title>JAVA 序列化</title><link>https://yh.timefriend.vip/post/java/javaserialize/</link><pubDate>Thu, 28 May 2020 20:26:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/java/javaserialize/</guid><description>&lt;h1 id="java-序列化"&gt;JAVA 序列化&lt;/h1&gt;&#10;&lt;h2 id="java编译过程"&gt;Java编译过程&lt;/h2&gt;&#10;&lt;p&gt;Java源码-&amp;gt; &lt;code&gt;javac&lt;/code&gt;将源码转换成class 文件-&amp;gt;&lt;code&gt;java&lt;/code&gt;命令执行 class 文件；&lt;/p&gt;&#10;&lt;h2 id="方法中的-t用途是什么"&gt;方法中的“&lt;!-- raw HTML omitted --&gt; T”用途是什么？&lt;/h2&gt;&#10;&lt;p&gt;在查看别人的源码时，会看到如下的代码：&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>My Little Baby</title><link>https://yh.timefriend.vip/post/other/mylittlebaby/</link><pubDate>Thu, 14 May 2020 22:25:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/mylittlebaby/</guid><description>&lt;h1 id="my-little-baby"&gt;My Little Baby&lt;/h1&gt;&#10;&lt;p&gt;My wife and I went to hostipal because she felt pain in womb on 6 May. The doctor advised hostipalization for her. She felt pain more frequenctly at that night. Doctors gave her a anesthetic that make her felt less pain.&lt;/p&gt;&#10;&lt;p&gt;She was ready to give birth a baby on the next day morning. I was waiting beside the door of delivery room. After two hours, a nurse opened the door and told me that my wife had given birth to a baby successfully. I was so happy at that time.&lt;/p&gt;</description></item><item><title>广东家常菜做法记录</title><link>https://yh.timefriend.vip/post/other/homecookingrecord/</link><pubDate>Sun, 03 May 2020 13:43:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/other/homecookingrecord/</guid><description>&lt;h1 id="广东家常菜"&gt;广东家常菜&lt;/h1&gt;&#10;&lt;h2 id="豆豉排骨"&gt;豆豉排骨&lt;/h2&gt;&#10;&lt;p&gt;食材：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;排骨一根（约350g）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;豆豉（5克 约覆盖的碗底）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;香菇（10g 约覆盖的碗底）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;土豆(80g)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;酱油(5ml)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;盐(3克)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;水（100ml）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;器具：电磁炉、电磁炉高压锅&lt;/p&gt;</description></item><item><title>深度学习-第一个数字识别项目</title><link>https://yh.timefriend.vip/post/machinelearning/mynumberidentify/</link><pubDate>Sun, 03 May 2020 09:15:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/mynumberidentify/</guid><description>&lt;h1 id="深度学习-第一个数字识别项目"&gt;深度学习-第一个数字识别项目&lt;/h1&gt;&#10;&lt;p&gt;今天按Google官方推荐流程，整理了开发模板，不是所有深度学习都严格按这个模板来实现，不同项目步骤有所删减，但大体框架是差不多的，主要为以下过程:&lt;/p&gt;</description></item><item><title>深度学习的历史（一）</title><link>https://yh.timefriend.vip/post/deeplearninghistory1/</link><pubDate>Fri, 01 May 2020 22:39:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/deeplearninghistory1/</guid><description>&lt;h1 id="深度学习的历史一"&gt;深度学习的历史（一）&lt;/h1&gt;&#10;&lt;p&gt;深度学习的主要突破是从2011年开始，开始超越其它算法成为主流也是从这个时间开始，因此我们有必要先了解从2011年开始的历史，话不多说，直接看。&lt;/p&gt;</description></item><item><title>英语发音-连读和节奏</title><link>https://yh.timefriend.vip/post/sensegroup/</link><pubDate>Mon, 27 Apr 2020 20:38:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/sensegroup/</guid><description>&lt;h1 id="英语发音-连读和节奏"&gt;英语发音-连读和节奏&lt;/h1&gt;&#10;&lt;h2 id="一连读"&gt;一、连读&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;连读指在同个意群里，前一个辅音音素结尾，后一个单词以元音音素开头，把它们连起来读。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;连读本质是用更短的时间传达信息，兼顾声音辨别，更加流畅。&lt;/p&gt;</description></item><item><title>Echo set color</title><link>https://yh.timefriend.vip/post/echoaddcolor/</link><pubDate>Sun, 26 Apr 2020 09:40:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/echoaddcolor/</guid><description>&lt;h1 id="echo-set-color"&gt;Echo set color&lt;/h1&gt;&#10;&lt;p&gt;先看例子：&lt;code&gt;echo -e &amp;quot;\033[32m Hello world \033[0m&amp;quot;&lt;/code&gt;;&lt;/p&gt;&#10;&lt;p&gt;会输出&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$echo -e &amp;#34;\033[32m Hello world \033[0m&amp;#34;&#10; Hello world # 绿色的文字&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其中：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;-e&lt;/code&gt;表示解析逃逸字符（Escape character），逃逸字符为&lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt;作前缀的字符；&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;\033[32m&lt;/code&gt;表示这后文字为绿色；&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;\033[0m&lt;/code&gt;表示清除所有格式设定；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这个语句打印的&lt;code&gt;Hello world&lt;/code&gt;文字是绿色的。&lt;/p&gt;</description></item><item><title>How to use CleanWhite Hugo Theme?</title><link>https://yh.timefriend.vip/post/how-to-use-cleanwhite-hugo-theme/</link><pubDate>Fri, 24 Apr 2020 15:57:20 +0800</pubDate><guid>https://yh.timefriend.vip/post/how-to-use-cleanwhite-hugo-theme/</guid><description>&lt;h1 id="how-to-use-cleanwhite-hugo-theme"&gt;How to use CleanWhite Hugo Theme?&lt;/h1&gt;&#10;&lt;p&gt;CleanWhite Hugo Theme 是&lt;a href="https://zhaohuabing.com/"&gt;Huabing Zhao&lt;/a&gt;制作的hugo主题，非常高雅好用，再次感谢Huabing。&lt;/p&gt;&#10;&lt;p&gt;我在使用时，花了一点时间，主要遇到以下问题：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1.config.toml怎么配置？&lt;/li&gt;&#10;&lt;li&gt;2.怎么在主页显示文章列表？&lt;/li&gt;&#10;&lt;li&gt;3.怎么在顶部菜单栏添加分类？&lt;/li&gt;&#10;&lt;li&gt;4.主页图片怎么设置？&lt;/li&gt;&#10;&lt;li&gt;5.怎么部署到github上？&lt;/li&gt;&#10;&lt;li&gt;6.什么设置个人域名？[可选]&lt;/li&gt;&#10;&lt;li&gt;7.怎么开启评论？&lt;/li&gt;&#10;&lt;li&gt;8.点击右上角的搜索，怎么提示404?&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;一个一个讲。&lt;/p&gt;</description></item><item><title/><link>https://yh.timefriend.vip/categories/tech/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/categories/tech/</guid><description/></item><item><title/><link>https://yh.timefriend.vip/post/machinelearning/other/thewaystoovercomeoverfitting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/other/thewaystoovercomeoverfitting/</guid><description>&lt;h1 id="the-ways-to-overcome-overfitting"&gt;The ways to overcome overfitting&lt;/h1&gt;&#10;&lt;p&gt;Collect data -&amp;gt; Data Processing -&amp;gt; Build model -&amp;gt; Training&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; Augmentaion &#10; L1,L2 Regularization&#10; early stopping Regularization&#10; Dropout&#10; Reduce Parameters&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title/><link>https://yh.timefriend.vip/post/machinelearning/sequentialfitxyshape/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/post/machinelearning/sequentialfitxyshape/</guid><description>&lt;h1 id="fit-x-shape-and-y-shape"&gt;fit x shape and y shape&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;# OS:Windows 10&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 version: 3.7.4&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;# numpy version:1.19.4&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 version: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 version:2.1.5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Error&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ValueError: Error when checking target: expected dense_2 to have 4 dimensions, but got array with shape (145, 11)&#10;&lt;/code&gt;&lt;/pre&gt;&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;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;simpleCNN&lt;/span&gt;(input_shape):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;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;&#9;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(Conv2D(filters&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;256&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;kernel_size &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (&lt;span style="color:#bd93f9"&gt;3&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;&#9;&#9;&#9;&#9;&#9;&#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;&#9;&#9;&#9;&#9;&#9;&#9;input_shape&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;input_shape,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&#9;&#9;&#9;&#9;&#9;&#9;padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;same&amp;#34;&lt;/span&gt; ) );&lt;span style="color:#6272a4"&gt;# output: 13*13*384&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(BatchNormalization()) &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(MaxPooling2D(pool_size&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;3&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;&#9;&#9;&#9;&#9;&#9;&#9;strides&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;2&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;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;same&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;&#9;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(Dense(&lt;span style="color:#bd93f9"&gt;512&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;, ))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add(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;&#9;&lt;span style="color:#6272a4"&gt;# model.add(layers.Dense(11, activation=&amp;#39;sigmoid&amp;#39;))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;model&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;compile(optimizer&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;rmsprop&amp;#39;&lt;/span&gt;, loss&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;categorical_crossentropy&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9; metrics&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;[&lt;span style="color:#f1fa8c"&gt;&amp;#39;accuracy&amp;#39;&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;return&lt;/span&gt; model;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;model summary:&lt;/p&gt;</description></item><item><title/><link>https://yh.timefriend.vip/post/other/howtoinputmathematicsformulainmarkdown/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/post/other/howtoinputmathematicsformulainmarkdown/</guid><description>&lt;h1 id="how-to-input-mathematics-formula-in-markdown"&gt;How to input mathematics formula in markdown?&lt;/h1&gt;&#10;&lt;p&gt;1.Edit a formula in &lt;a href="https://latex.codecogs.com/"&gt;latex.codecogs.com&lt;/a&gt; and download svg suffix file, then store it in you markdown project and refer it with url&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://yh.timefriend.vip/img/math_formula/sum_y_substract_ypre.svg" alt="sum_y_substract_ypre"&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;![sum_y_substract_ypre](/img/math_formula/sum_y_substract_ypre.svg)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://yh.timefriend.vip/img/math_formula/ms_partial_b.svg" alt="ms_partial_b"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://yh.timefriend.vip/img/math_formula/ms_partial_w.svg" alt="ms_partial_b"&gt;&lt;/p&gt;</description></item><item><title/><link>https://yh.timefriend.vip/search/placeholder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/search/placeholder/</guid><description/></item><item><title/><link>https://yh.timefriend.vip/tags/how-to-do/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/tags/how-to-do/</guid><description/></item><item><title/><link>https://yh.timefriend.vip/top/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yh.timefriend.vip/top/about/</guid><description>&lt;h1 id="about-me"&gt;About me&lt;/h1&gt;&#10;&lt;p&gt;I&amp;rsquo;m Yaohong.&lt;/p&gt;&#10;&lt;p&gt;Try to be a lifelong learner.&lt;/p&gt;&#10;&lt;p&gt;Main Url:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.yaohong.vip"&gt;https://www.yaohong.vip&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.yaohong.vip"&gt;https://blog.yaohong.vip&lt;/a&gt; （部署在另一台服务器）&lt;/p&gt;&#10;&lt;p&gt;Backup url：https://master.d1xvo0d8o10m9n.amplifyapp.com/&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>