<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-32050487</id><updated>2026-07-28T12:05:45.592+02:00</updated><category term="statistics"/><category term="c++"/><category term="extra"/><category term="mathematics"/><category term="asr"/><category term="books"/><category term="kaldi"/><category term="old projects"/><category term="reinforcement learning"/><category term="speech recognition"/><category term="NLP"/><category term="SLTC"/><category term="STL"/><category term="TD"/><category term="asterisk"/><category term="backup"/><category term="consulting"/><category term="dictation"/><category term="gmail"/><category term="internet tv"/><category term="machine learning"/><category term="online TV"/><category term="python"/><category term="spoken dialogue systems"/><category term="tools"/><category term="voice agents"/><category term="voip"/><category term="web"/><title type='text'>Filip Jurčíček</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-32050487.post-2912726428806929773</id><published>2026-07-28T12:05:45.592+02:00</published><updated>2026-07-28T12:05:45.592+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="internet tv"/><category scheme="http://www.blogger.com/atom/ns#" term="old projects"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Free Internet TV, a 2008 link directory that outlived its era</title><content type='html'>&lt;p&gt;Another one from the archive. &lt;a href=&quot;https://www.free-internet-tv.cz&quot;&gt;Free Internet TV&lt;/a&gt; is a directory of live TV channels streaming for free on the web, sorted by language and region &amp;mdash; Arabic, Czech, English, French, German, Italian, Portuguese, Russian, Slovak.&lt;/p&gt;

&lt;p&gt;It was built when watching television in a browser still meant installing RealPlayer and hoping your ADSL line held up. Plenty of the links have rotted since, but the surprise is how many still resolve, and how useful the list remains if you want news in a language you are learning rather than the algorithm&#39;s idea of what you should watch.&lt;/p&gt;

&lt;p&gt;Like the Gmail Backup site, it now runs as a static mirror on S3 behind HTTPS. Old sites do not have to die; they just have to stop needing a database.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/2912726428806929773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/2912726428806929773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/2912726428806929773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/2912726428806929773'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2026/07/free-internet-tv-2008-link-directory.html' title='Free Internet TV, a 2008 link directory that outlived its era'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-796102230789740858</id><published>2026-07-28T12:05:01.732+02:00</published><updated>2026-07-28T12:05:01.733+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="gmail"/><category scheme="http://www.blogger.com/atom/ns#" term="old projects"/><title type='text'>Gmail Backup is still online</title><content type='html'>&lt;p&gt;Jan &amp;Scaron;vec and I wrote Gmail Backup back in 2008 &amp;mdash; a one-click tool that pulled your Gmail down over IMAP into a local folder, with incremental backups so you only fetched what was new. It ran on Windows and Linux, the code went out under GPL v3, and for a few years it was the answer people gave when someone asked how to get their mail off Google&#39;s servers.&lt;/p&gt;

&lt;p&gt;It is old software and the world has moved on, but the site is still up: &lt;a href=&quot;https://www.gmail-backup.com&quot;&gt;www.gmail-backup.com&lt;/a&gt;, with the downloads, the documentation, the FAQ and the forum threads intact. I recently moved the whole thing to static hosting and put it back on HTTPS, which is the only reason it still loads at all.&lt;/p&gt;

&lt;p&gt;Worth remembering the premise, which has not aged: your mail is only yours if you have a copy of it.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/796102230789740858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/796102230789740858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/796102230789740858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/796102230789740858'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2026/07/gmail-backup-is-still-online.html' title='Gmail Backup is still online'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-5047759162873497132</id><published>2026-07-28T12:04:09.433+02:00</published><updated>2026-07-28T12:04:09.433+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="consulting"/><category scheme="http://www.blogger.com/atom/ns#" term="NLP"/><category scheme="http://www.blogger.com/atom/ns#" term="speech recognition"/><category scheme="http://www.blogger.com/atom/ns#" term="voice agents"/><title type='text'>Voice AI consulting through Voicebre Systems</title><content type='html'>&lt;p&gt;A note on what I do when I am not writing about KALDI graphs: I take on voice AI work through &lt;a href=&quot;https://voicebresystems.cz&quot;&gt;Voicebre Systems&lt;/a&gt;, a small consultancy based in Prague.&lt;/p&gt;

&lt;p&gt;Three things, mostly: custom speech recognition &amp;mdash; including voice commands and languages that the off-the-shelf stacks handle badly; natural language understanding for conversational systems; and end-to-end voice agents, from VUI design through to integration with whatever is already running in the business.&lt;/p&gt;

&lt;p&gt;The interesting problems are usually not the model. They are the data you are allowed to use, the latency budget, and what happens on the turn where the user says something nobody anticipated. If that is the shape of your problem, &lt;a href=&quot;https://voicebresystems.cz&quot;&gt;get in touch&lt;/a&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/5047759162873497132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/5047759162873497132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/5047759162873497132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/5047759162873497132'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2026/07/voice-ai-consulting-through-voicebre.html' title='Voice AI consulting through Voicebre Systems'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-7056192284589981623</id><published>2026-07-28T12:03:16.459+02:00</published><updated>2026-07-28T12:03:16.460+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dictation"/><category scheme="http://www.blogger.com/atom/ns#" term="speech recognition"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>Vokarys: dictation that runs on your own machine</title><content type='html'>&lt;p&gt;Most dictation today is a round trip to someone else&#39;s GPU. That is fine until your voice is the part the model was never trained on &amp;mdash; an accent, a speech difference, a bad microphone in a noisy room &amp;mdash; and you have no way to make it adapt.&lt;/p&gt;

&lt;p&gt;That is the problem &lt;a href=&quot;https://vokarys.com&quot;&gt;Vokarys&lt;/a&gt; goes after. It is a desktop app that turns speech into text with recognition running locally on your computer, with punctuation and capitalisation added as you talk. It learns from your own voice over time, and recordings stay on the machine unless you explicitly choose to contribute them. There is a voice chat mode wired to Gemini as well, and a browser version if you would rather not install anything.&lt;/p&gt;

&lt;p&gt;If you have given up on dictation because the generic model never quite got you, it is worth a look.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/7056192284589981623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/7056192284589981623'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2026/07/vokarys-dictation-that-runs-on-your-own.html' title='Vokarys: dictation that runs on your own machine'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-241379439150196388</id><published>2024-02-15T19:35:00.008+01:00</published><updated>2024-02-15T19:35:59.197+01:00</updated><title type='text'>Privacy policy</title><content type='html'>&lt;p&gt;&amp;nbsp;Privacy Policy&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Effective date: 2024-02-16&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This Privacy Policy applies to the website [bozskyfilip.blogspot.com] operated by [Filip Jurcicek] (&quot;us&quot;, &quot;we&quot;, or &quot;our&quot;). This Policy informs you of our policies regarding the collection, use, and disclosure of personal data we receive from users of our website.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. Information Collection and Use&lt;/p&gt;&lt;p&gt;We may collect and process the following types of data:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1.1 Personal Data:&lt;/p&gt;&lt;p&gt;We may collect personally identifiable information including, but not limited to, your name, email address, and contact information. We collect this information for the purpose of providing and improving our services to you.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1.2 Usage Data:&lt;/p&gt;&lt;p&gt;We may collect non-personally identifiable information about how you use our website. This may include your IP address, browser type, device type, operating system, and other similar information. We collect this information to analyze trends, administer the site, track users&#39; movements, and gather demographic information for aggregate use.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. Use of Data&lt;/p&gt;&lt;p&gt;We use your personal data for the following purposes:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2.1 To provide and maintain the website,&lt;/p&gt;&lt;p&gt;2.2 To notify you about changes to our website,&lt;/p&gt;&lt;p&gt;2.3 To allow you to participate in interactive features of our website when you choose to do so,&lt;/p&gt;&lt;p&gt;2.4 To provide customer support,&lt;/p&gt;&lt;p&gt;2.5 To gather analysis or valuable information so that we can improve our website,&lt;/p&gt;&lt;p&gt;2.6 To monitor the usage of our website,&lt;/p&gt;&lt;p&gt;2.7 To detect, prevent and address technical issues,&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. Disclosure of Data&lt;/p&gt;&lt;p&gt;We may disclose personal data in the good faith belief that such action is necessary to:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.1 Comply with a legal obligation,&lt;/p&gt;&lt;p&gt;3.2 Protect and defend our rights or property,&lt;/p&gt;&lt;p&gt;3.3 Prevent or investigate possible wrongdoing,&lt;/p&gt;&lt;p&gt;3.4 Protect the personal safety of users of the website or the public,&lt;/p&gt;&lt;p&gt;3.5 Protect against legal liability.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We may also share non-personally identifiable information with third-party service providers to help us analyze how our website is used and improve our services. These third-party service providers are obligated to keep your information confidential.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. Third-Party Services&lt;/p&gt;&lt;p&gt;This website uses Google AdSense AdWords to serve advertisements. Please note that Google AdSense AdWords uses cookies to provide personalized ads based on your interests. You can opt-out of Google AdSense AdWords services by visiting the Google Ads Settings page.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5. Security&lt;/p&gt;&lt;p&gt;We take reasonable measures to protect your personal data; however, no method of transmission over the internet or electronic storage is completely secure. We cannot guarantee the absolute security of your data.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6. Your Rights&lt;/p&gt;&lt;p&gt;You have the right to:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6.1 Request access and receive a copy of the personal data we hold about you,&lt;/p&gt;&lt;p&gt;6.2 Request rectification of any inaccurate personal data we hold about you,&lt;/p&gt;&lt;p&gt;6.3 Request erasure of your personal data,&lt;/p&gt;&lt;p&gt;6.4 Object to the processing of your personal data,&lt;/p&gt;&lt;p&gt;6.5 Request the restriction of processing of your personal data,&lt;/p&gt;&lt;p&gt;6.6 Request the transfer of your personal data to another party.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you wish to exercise any of these rights, please contact us using the contact information provided at the end of this Privacy Policy.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;7. Children&#39;s Privacy&lt;/p&gt;&lt;p&gt;Our website is not intended for use by individuals under the age of 13. We do not knowingly collect personally identifiable information from children under 13. If you are a parent or guardian and you areaware that your child has provided us with personal data, please contact us so that we can take necessary action to delete such information from our servers.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;8. Changes to This Privacy Policy&lt;/p&gt;&lt;p&gt;We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. It is advised to review this Privacy Policy periodically for any changes. Changes are effective immediately upon posting on this page.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;9. Contact Us&lt;/p&gt;&lt;p&gt;If you have any questions or concerns regarding this Privacy Policy, please contact us at [filip.jurcicek@gmail.com].&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Please note that this privacy policy is designed to comply with the General Data Protection Regulation (GDPR) and the California Consumer Privacy Act (CCPA). This policy outlines the information we collect, how we use it, and offers transparency on our usage of Google AdSense AdWords. By using our website, you agree to the terms outlined in this Privacy Policy.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Last updated: 2024-02-15&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/241379439150196388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/241379439150196388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/241379439150196388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/241379439150196388'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2024/02/privacy-policy.html' title='Privacy policy'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-5008140581956138938</id><published>2020-07-02T17:18:00.002+02:00</published><updated>2020-07-02T17:18:52.708+02:00</updated><title type='text'>Categorical Reparameterization with Gumbel-Softmax &amp; The Concrete Distri...</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;270&quot; src=&quot;https://www.youtube.com/embed/JFgXEbgcT7g&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/5008140581956138938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/5008140581956138938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/5008140581956138938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/5008140581956138938'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2020/07/categorical-reparameterization-with.html' title='Categorical Reparameterization with Gumbel-Softmax &amp; The Concrete Distri...'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/JFgXEbgcT7g/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-3144573559069769903</id><published>2018-02-20T09:38:00.000+01:00</published><updated>2018-02-20T09:38:25.389+01:00</updated><title type='text'>Midnight Commander shortcuts</title><content type='html'>&lt;table class=&quot;pixelbeat&quot; style=&quot;background-color: lightgreen; border-collapse: collapse; border-color: rgb(192, 255, 192); border-spacing: 0px; border-style: solid; border-width: 0px 0px 1px 1px; color: #222222; font-family: Verdana, Arial, sans-serif; font-size: small; margin: 2px 0px 1px; text-align: justify;&quot;&gt;&lt;tbody&gt;
&lt;tr class=&quot;pbtitle&quot; style=&quot;background-color: green;&quot;&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;b&gt;Key&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;b&gt;Action&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;b&gt;Notes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Ctrl+o&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;toggle panes on/off&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Ctrl+l&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;redraw screen&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;This is on&amp;nbsp;&lt;a href=&quot;http://www.pixelbeat.org/lkdb/terminal.html&quot; style=&quot;outline-style: none; text-decoration-line: none;&quot;&gt;all terminals&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Ctrl+PgUp&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;goto parent dir&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Ctrl+Enter&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;copy selected filename to command line&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;%f is equivalent&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;b&gt;Ctrl+x+p&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;b&gt;copy unselected panel&#39;s path to command line&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;b&gt;%D is equivalent&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Ctrl+x !&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;External panelize&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Display paths returned from external command&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Shift+mouse&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;select text&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Insert&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;toggle selection of highlighted file&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;*&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;toggle selection&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;+&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;add pattern to selection&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;remove pattern from selection&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F3&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;view&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F4&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;edit&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F5&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;copy&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F6&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;rename&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F7&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;mkdir&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F8&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;remove&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F9&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;menu&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td nowrap=&quot;&quot; style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;F10&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;Exit&lt;/td&gt;&lt;td style=&quot;border-color: rgb(192, 255, 192); border-style: solid; border-width: 1px 1px 0px 0px; padding: 0px 1px 0px 2px;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/3144573559069769903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/3144573559069769903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3144573559069769903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3144573559069769903'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2018/02/midnight-commander-shortcuts.html' title='Midnight Commander shortcuts'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-7428709685641304265</id><published>2017-11-14T09:29:00.000+01:00</published><updated>2017-11-15T09:49:56.730+01:00</updated><title type='text'>how the make HCL and G graphs, and on the fly compositon of HCL and G for KALDI</title><content type='html'>&lt;br /&gt;
Well, I had again to do something ;-) The task is to generate/create/update a decoding&amp;nbsp;graph for KALDI on the fly. In my case, I aim at changing a G (grammar) in the context of a dialogue system.&lt;br /&gt;
&lt;br /&gt;
One can generate a new HCLG but this would take a lot of time as this involves FST determinization, epsilon-removal, minimization, etc. Therefore, I tried to use on-the-fly composition of statically prepared HCL and G. At first, I struggled with it but later I made it work. See&amp;nbsp;&lt;a href=&quot;https://github.com/jpuigcerver/kaldi-decoders/issues/1&quot; target=&quot;_blank&quot;&gt;https://github.com/jpuigcerver/kaldi-decoders/issues/1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here is a short summary:&lt;br /&gt;
&lt;br /&gt;
At the end, I managed to get LabelLookAheadMatcher to work. It is mostly based on the code and examples in opendcd, e.g. &lt;a href=&quot;https://github.com/opendcd/opendcd/blob/master/script/makegraphotf.sh&quot;&gt;https://github.com/opendcd/opendcd/blob/master/script/makegraphotf.sh&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
First, Here is how I build and prepare the HCL and G. Please not that OpenFST must be compiled with&amp;nbsp;&lt;span style=&quot;background-color: white; color: #7a4707; font-family: monospace; font-size: 11.0906px;&quot;&gt;--enable-lookahead-fsts&lt;/span&gt;, see &lt;a href=&quot;http://www.openfst.org/twiki/bin/view/FST/ReadMe&quot;&gt;http://www.openfst.org/twiki/bin/view/FST/ReadMe&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;border-radius: 3px; box-sizing: border-box; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; color: #24292e; display: inline; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 11.9px; line-height: inherit; margin: 0px; overflow: visible; padding: 0px; word-break: normal; word-wrap: normal;&quot;&gt;#---------------

fstdeterminize ${lang}/L_disambig.fst | fstarcsort &amp;gt; ${dir}/det.L.fst

#---------------

fstcomposecontext \
    --context-size=$N --central-position=$P \
    --read-disambig-syms=${lang}/phones/disambig.int \
    --write-disambig-syms=${lang}/disambig_ilabels_${N}_${P}.int \
    ${dir}/ilabels_${N}_${P} ${dir}/det.L.fst | \
    fstarcsort &amp;gt; ${dir}/CL.fst

#---------------

make-h-transducer \
    --disambig-syms-out=${dir}/h.disambig.int \
    --transition-scale=$tscale \
    ${dir}/ilabels_${N}_${P} \
    ${tree} \
    ${model} &amp;gt; ${dir}/Ha.fst

cat ${dir}/Ha.fst &amp;gt; ${dir}/det.Ha.fst

#---------------

fstconvert \
     --fst_type=ilabel_lookahead \
     --save_relabel_ipairs=${dir}/h.orelabel ${dir}/CL.fst |
     fstarcsort --sort_type=ilabel &amp;gt; ${dir}/la.CL.fst
    
fstrelabel --relabel_opairs=${dir}/h.orelabel ${dir}/det.Ha.fst | \
     fstarcsort --sort_type=olabel | \
     fstcompose - ${dir}/la.CL.fst &amp;gt; ${dir}/det.HaCL.fst

#---------------

fstdeterminize ${dir}/det.HaCL.fst | \
    fstrmsymbols ${dir}/h.disambig.int | \
    fstrmepslocal | \
    fstpushspecial | \
    fstminimizeencoded | \
    add-self-loops --self-loop-scale=$loopscale --reorder=true ${model} - | 
    fstarcsort --sort_type=olabel |
    fstconvert --fst_type=const &amp;gt; ${dir}/HCL.fst

#-----------------------------

fstconvert --fst_type=olabel_lookahead --save_relabel_opairs=${dir}/g.irelabel ${dir}/HCL.fst &amp;gt; ${dir}/HCLr.fst
fstrelabel --relabel_ipairs=${dir}/g.irelabel ${lang}/G.fst | \
    fstarcsort | 
    fstconvert --fst_type=const &amp;gt; ${dir}/Gr.fst

fstcompose ${dir}/HCLr.fst ${dir}/Gr.fst | \
    fstconvert --fst_type=const &amp;gt; ${dir}/HCLrGr.fst&lt;/code&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-color: initial; border-image: initial; border-radius: 3px; border-style: initial; box-sizing: border-box; line-height: inherit;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Please note that the &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;HCLrGr.fst&lt;/b&gt;&lt;/span&gt; FST is here for testing purposes just to determine if offline composed HCLG is good. This can be simply tested using the regular code/decoder not assuming on-the-fly composition.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
The composed HCLG for the KALDI decoder is created as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;pre style=&quot;border-radius: 3px; box-sizing: border-box; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; color: #24292e; display: inline; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 11.9px; line-height: inherit; margin: 0px; overflow: visible; padding: 0px; word-break: normal; word-wrap: normal;&quot;&gt;ComposeFst&lt;stdarc&gt;* OTFComposeFst(
    const StdFst &amp;amp;ifst1, const StdFst &amp;amp;ifst2,
    const CacheOptions&amp;amp; cache_opts = CacheOptions()) {

  typedef LookAheadMatcher&amp;lt; StdFst &amp;gt; M;
  typedef AltSequenceComposeFilter&lt;m&gt; SF;
  typedef LookAheadComposeFilter&lt;sf m=&quot;&quot;&gt;  LF;
  typedef PushWeightsComposeFilter&lt;lf m=&quot;&quot;&gt; WF;
  typedef PushLabelsComposeFilter&lt;wf m=&quot;&quot;&gt; ComposeFilter;
  typedef M FstMatcher;
  
  ComposeFstOptions&lt;stdarc composefilter=&quot;&quot; fstmatcher=&quot;&quot;&gt; opts(cache_opts);

  return new ComposeFst&lt;stdarc&gt;(ifst1, ifst2, opts);
}&lt;/stdarc&gt;&lt;/stdarc&gt;&lt;/wf&gt;&lt;/lf&gt;&lt;/sf&gt;&lt;/m&gt;&lt;/stdarc&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
My observation is that when I want the same WER then I must lower pruning for the OTF composed HCL and G. This results in about 20 % increase in RTF. If I fix RTF then my WER is about 20 % relatively worse for OTF composed HCL and G. So, there is some cost of the OTF composition though it is not that bad. It is usable.&lt;br /&gt;
&lt;br /&gt;
Please note that preparation of the HCL and G is a bit different from the one in &lt;a href=&quot;https://github.com/opendcd/opendcd/blob/master/script/makegraphotf.sh&quot;&gt;https://github.com/opendcd/opendcd/blob/master/script/makegraphotf.sh&lt;/a&gt; . For example, I could not determinize Ha.fst as it appeared to be non-functional. Also, the determinization of L is important, otherwise the final HCL graph will not be &quot;small enough&quot; and therefore the OTF composition would not be that efficient.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/7428709685641304265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/7428709685641304265' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/7428709685641304265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/7428709685641304265'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2017/11/how-make-hcl-and-g-graphs-and-on-fly.html' title='how the make HCL and G graphs, and on the fly compositon of HCL and G for KALDI'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-3923826091051702503</id><published>2017-10-18T15:10:00.004+02:00</published><updated>2017-10-18T15:14:37.595+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asr"/><category scheme="http://www.blogger.com/atom/ns#" term="kaldi"/><title type='text'>kaldi editing nnet3 chain model - adding a softmax layer on top of the chain output </title><content type='html'>I had to do one more thing: to edit a trained&amp;nbsp;&lt;a href=&quot;https://github.com/kaldi-asr/kaldi&quot; target=&quot;_blank&quot;&gt;kaldi&lt;/a&gt;&amp;nbsp;nnet3 chain model and add a softmax layer on top of the chain model. The reason for this is to get &quot;probability&quot; like output directly from the chain model&lt;br /&gt;
&lt;br /&gt;
First, let&#39;s look at the nnet&amp;nbsp;structure:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;nnet3-am-info final.mdl&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;input-dim: 20&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;ivector-dim: -1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;num-pdfs: 6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;prior-dimension: 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;# Nnet info follows.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;left-context: 15&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;right-context: 15&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;num-parameters: 15499085&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;modulus: 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;input-node name=input dim=20&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=L0_fixaffine component=L0_fixaffine input=Append(Offset(input, -1), input, Offset(input, 1)) input-dim=60 output-dim=60&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_0_affine component=Tdnn_0_affine input=L0_fixaffine input-dim=60 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_0_relu component=Tdnn_0_relu input=Tdnn_0_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_0_renorm component=Tdnn_0_renorm input=Tdnn_0_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_1_affine component=Tdnn_1_affine input=Append(Offset(Tdnn_0_renorm, -1), Tdnn_0_renorm, Offset(Tdnn_0_renorm, 1)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_1_relu component=Tdnn_1_relu input=Tdnn_1_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_1_renorm component=Tdnn_1_renorm input=Tdnn_1_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_2_affine component=Tdnn_2_affine input=Append(Offset(Tdnn_1_renorm, -1), Tdnn_1_renorm, Offset(Tdnn_1_renorm, 1)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_2_relu component=Tdnn_2_relu input=Tdnn_2_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_2_renorm component=Tdnn_2_renorm input=Tdnn_2_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_3_affine component=Tdnn_3_affine input=Append(Offset(Tdnn_2_renorm, -3), Tdnn_2_renorm, Offset(Tdnn_2_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_3_relu component=Tdnn_3_relu input=Tdnn_3_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_3_renorm component=Tdnn_3_renorm input=Tdnn_3_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_4_affine component=Tdnn_4_affine input=Append(Offset(Tdnn_3_renorm, -3), Tdnn_3_renorm, Offset(Tdnn_3_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_4_relu component=Tdnn_4_relu input=Tdnn_4_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_4_renorm component=Tdnn_4_renorm input=Tdnn_4_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_5_affine component=Tdnn_5_affine input=Append(Offset(Tdnn_4_renorm, -3), Tdnn_4_renorm, Offset(Tdnn_4_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_5_relu component=Tdnn_5_relu input=Tdnn_5_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_5_renorm component=Tdnn_5_renorm input=Tdnn_5_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_6_affine component=Tdnn_6_affine input=Append(Offset(Tdnn_5_renorm, -3), Tdnn_5_renorm, Offset(Tdnn_5_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_6_relu component=Tdnn_6_relu input=Tdnn_6_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_6_renorm component=Tdnn_6_renorm input=Tdnn_6_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_chain_affine component=Tdnn_pre_final_chain_affine input=Tdnn_6_renorm input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_chain_relu component=Tdnn_pre_final_chain_relu input=Tdnn_pre_final_chain_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_chain_renorm component=Tdnn_pre_final_chain_renorm input=Tdnn_pre_final_chain_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_affine component=Tdnn_pre_final_xent_affine input=Tdnn_6_renorm input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_relu component=Tdnn_pre_final_xent_relu input=Tdnn_pre_final_xent_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_renorm component=Tdnn_pre_final_xent_renorm input=Tdnn_pre_final_xent_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Final_affine component=Final_affine input=Tdnn_pre_final_chain_renorm input-dim=625 output-dim=6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;&lt;b&gt;output-node name=output input=Final_affine dim=6105 objective=linear&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Final-xent_affine component=Final-xent_affine input=Tdnn_pre_final_xent_renorm input-dim=625 output-dim=6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Final-xent_log_softmax component=Final-xent_log_softmax input=Final-xent_affine input-dim=6105 output-dim=6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;&lt;b&gt;output-node name=output-xent input=Final-xent_log_softmax dim=6105 objective=linear&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br class=&quot;Apple-interchange-newline&quot; /&gt;
The solution is a bit more complicated then the solution for editing task in the previous blog post.&lt;br /&gt;
First, I have to add some components to the network to add softmax layer, then to remove and rename the added softmax layer. This done trough creating nnet-config and then using edits provided by nnet3-am-copy:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;echo &quot;component-node name=Final_log_softmax component=Final_log_softmax input=Final_affine&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;output-node name=output-softmax input=Final_log_softmax objective=linear&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;component name=Final_log_softmax type=LogSoftmaxComponent dim=6105&quot; &amp;gt; add.chain.softmax.cfg&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
&lt;b style=&quot;font-family: &amp;quot;courier new&amp;quot;, courier, monospace;&quot;&gt;cat final.mdl | nnet3-am-copy --nnet-config=add.chain.softmax.cfg - - | nnet3-am-copy --edits=&#39;remove-output-nodes name=output;rename-node old-name=output-softmax new-name=output;remove-orphans&#39; - final.chain.softmax.mdl&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;LOG (nnet3-am-copy:main():nnet3-am-copy.cc:156) Copied neural net from - to -&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;LOG (nnet3-am-copy:ReadEditConfig():nnet-utils.cc:687) Removing 1 output nodes.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;LOG (nnet3-am-copy:RemoveSomeNodes():nnet-nnet.cc:885) Removed 1 orphan nodes.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;LOG (nnet3-am-copy:RemoveOrphanComponents():nnet-nnet.cc:810) Removing 0 orphan components.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;LOG (nnet3-am-copy:main():nnet3-am-copy.cc:156) Copied neural net from - to final.chain.softmax.mdl&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#39;s look at the&amp;nbsp;modified structure:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;nnet3-am-info final.chain.softmax.mdl&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;input-dim: 20&amp;nbsp;&lt;/span&gt;&lt;br /&gt;ivector-dim: -1&lt;br /&gt;num-pdfs: 6105&lt;br /&gt;prior-dimension: 0&lt;br /&gt;# Nnet info follows.&lt;br /&gt;left-context: 15&lt;br /&gt;right-context: 15&lt;br /&gt;num-parameters: 15499085&lt;br /&gt;modulus: 1&lt;br /&gt;input-node name=input dim=20&lt;br /&gt;component-node name=L0_fixaffine component=L0_fixaffine input=Append(Offset(input, -1), input, Offset(input, 1)) input-dim=60 output-dim=60&lt;br /&gt;component-node name=Tdnn_0_affine component=Tdnn_0_affine input=L0_fixaffine input-dim=60 output-dim=625&lt;br /&gt;component-node name=Tdnn_0_relu component=Tdnn_0_relu input=Tdnn_0_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_0_renorm component=Tdnn_0_renorm input=Tdnn_0_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_1_affine component=Tdnn_1_affine input=Append(Offset(Tdnn_0_renorm, -1), Tdnn_0_renorm, Offset(Tdnn_0_renorm, 1)) input-dim=1875 output-dim=625&lt;br /&gt;component-node name=Tdnn_1_relu component=Tdnn_1_relu input=Tdnn_1_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_1_renorm component=Tdnn_1_renorm input=Tdnn_1_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_2_affine component=Tdnn_2_affine input=Append(Offset(Tdnn_1_renorm, -1), Tdnn_1_renorm, Offset(Tdnn_1_renorm, 1)) input-dim=1875 output-dim=625&lt;br /&gt;component-node name=Tdnn_2_relu component=Tdnn_2_relu input=Tdnn_2_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_2_renorm component=Tdnn_2_renorm input=Tdnn_2_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_3_affine component=Tdnn_3_affine input=Append(Offset(Tdnn_2_renorm, -3), Tdnn_2_renorm, Offset(Tdnn_2_renorm, 3)) input-dim=1875 output-dim=625&lt;br /&gt;component-node name=Tdnn_3_relu component=Tdnn_3_relu input=Tdnn_3_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_3_renorm component=Tdnn_3_renorm input=Tdnn_3_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_4_affine component=Tdnn_4_affine input=Append(Offset(Tdnn_3_renorm, -3), Tdnn_3_renorm, Offset(Tdnn_3_renorm, 3)) input-dim=1875 output-dim=625&lt;br /&gt;component-node name=Tdnn_4_relu component=Tdnn_4_relu input=Tdnn_4_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_4_renorm component=Tdnn_4_renorm input=Tdnn_4_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_5_affine component=Tdnn_5_affine input=Append(Offset(Tdnn_4_renorm, -3), Tdnn_4_renorm, Offset(Tdnn_4_renorm, 3)) input-dim=1875 output-dim=625&lt;br /&gt;component-node name=Tdnn_5_relu component=Tdnn_5_relu input=Tdnn_5_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_5_renorm component=Tdnn_5_renorm input=Tdnn_5_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_6_affine component=Tdnn_6_affine input=Append(Offset(Tdnn_5_renorm, -3), Tdnn_5_renorm, Offset(Tdnn_5_renorm, 3)) input-dim=1875 output-dim=625&lt;br /&gt;component-node name=Tdnn_6_relu component=Tdnn_6_relu input=Tdnn_6_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_6_renorm component=Tdnn_6_renorm input=Tdnn_6_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_pre_final_chain_affine component=Tdnn_pre_final_chain_affine input=Tdnn_6_renorm input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_pre_final_chain_relu component=Tdnn_pre_final_chain_relu input=Tdnn_pre_final_chain_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_pre_final_chain_renorm component=Tdnn_pre_final_chain_renorm input=Tdnn_pre_final_chain_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_pre_final_xent_affine component=Tdnn_pre_final_xent_affine input=Tdnn_6_renorm input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_pre_final_xent_relu component=Tdnn_pre_final_xent_relu input=Tdnn_pre_final_xent_affine input-dim=625 output-dim=625&lt;br /&gt;component-node name=Tdnn_pre_final_xent_renorm component=Tdnn_pre_final_xent_renorm input=Tdnn_pre_final_xent_relu input-dim=625 output-dim=625&lt;br /&gt;component-node name=Final_affine component=Final_affine input=Tdnn_pre_final_chain_renorm input-dim=625 output-dim=6105&lt;br /&gt;component-node name=Final-xent_affine component=Final-xent_affine input=Tdnn_pre_final_xent_renorm input-dim=625 output-dim=6105&lt;br /&gt;component-node name=Final-xent_log_softmax component=Final-xent_log_softmax input=Final-xent_affine input-dim=6105 output-dim=6105&lt;br /&gt;output-node name=output-xent input=Final-xent_log_softmax dim=6105 objective=linear&lt;br /&gt;&lt;b&gt;component-node name=Final_log_softmax component=Final_log_softmax&amp;nbsp;input=Final_affine input-dim=6105 output-dim=6105&lt;/b&gt;&lt;br /&gt;&lt;b&gt;output-node name=output input=Final_log_softmax dim=6105 objective=linear&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component name=Final_log_softmax type=LogSoftmaxComponent, dim=6105&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Cool, it worked!&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/3923826091051702503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/3923826091051702503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3923826091051702503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3923826091051702503'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2017/10/kaldi-editing-nnet3-chain-model-adding.html' title='kaldi editing nnet3 chain model - adding a softmax layer on top of the chain output '/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-4077105390347418081</id><published>2017-10-18T11:44:00.000+02:00</published><updated>2017-10-18T15:14:47.954+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asr"/><category scheme="http://www.blogger.com/atom/ns#" term="kaldi"/><title type='text'>kaldi editing nnet3 chain model - using the auxiliary xent output as the main output</title><content type='html'>I had a task to edit a trained &lt;a href=&quot;https://github.com/kaldi-asr/kaldi&quot; target=&quot;_blank&quot;&gt;kaldi&lt;/a&gt;&amp;nbsp;nnet3 chain model so that the output node is the output-xent instead the original output.&lt;br /&gt;
&lt;br /&gt;
First, let&#39;s look at the nnet&amp;nbsp;structure:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: xx-small;&quot;&gt;&lt;b&gt;nnet3-am-info final.mdl&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;input-dim: 20&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;ivector-dim: -1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;num-pdfs: 6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;prior-dimension: 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;# Nnet info follows.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;left-context: 15&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;right-context: 15&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;num-parameters: 15499085&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;modulus: 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;input-node name=input dim=20&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=L0_fixaffine component=L0_fixaffine input=Append(Offset(input, -1), input, Offset(input, 1)) input-dim=60 output-dim=60&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_0_affine component=Tdnn_0_affine input=L0_fixaffine input-dim=60 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_0_relu component=Tdnn_0_relu input=Tdnn_0_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_0_renorm component=Tdnn_0_renorm input=Tdnn_0_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_1_affine component=Tdnn_1_affine input=Append(Offset(Tdnn_0_renorm, -1), Tdnn_0_renorm, Offset(Tdnn_0_renorm, 1)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_1_relu component=Tdnn_1_relu input=Tdnn_1_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_1_renorm component=Tdnn_1_renorm input=Tdnn_1_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_2_affine component=Tdnn_2_affine input=Append(Offset(Tdnn_1_renorm, -1), Tdnn_1_renorm, Offset(Tdnn_1_renorm, 1)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_2_relu component=Tdnn_2_relu input=Tdnn_2_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_2_renorm component=Tdnn_2_renorm input=Tdnn_2_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_3_affine component=Tdnn_3_affine input=Append(Offset(Tdnn_2_renorm, -3), Tdnn_2_renorm, Offset(Tdnn_2_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_3_relu component=Tdnn_3_relu input=Tdnn_3_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_3_renorm component=Tdnn_3_renorm input=Tdnn_3_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_4_affine component=Tdnn_4_affine input=Append(Offset(Tdnn_3_renorm, -3), Tdnn_3_renorm, Offset(Tdnn_3_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_4_relu component=Tdnn_4_relu input=Tdnn_4_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_4_renorm component=Tdnn_4_renorm input=Tdnn_4_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_5_affine component=Tdnn_5_affine input=Append(Offset(Tdnn_4_renorm, -3), Tdnn_4_renorm, Offset(Tdnn_4_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_5_relu component=Tdnn_5_relu input=Tdnn_5_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_5_renorm component=Tdnn_5_renorm input=Tdnn_5_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_6_affine component=Tdnn_6_affine input=Append(Offset(Tdnn_5_renorm, -3), Tdnn_5_renorm, Offset(Tdnn_5_renorm, 3)) input-dim=1875 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_6_relu component=Tdnn_6_relu input=Tdnn_6_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_6_renorm component=Tdnn_6_renorm input=Tdnn_6_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_chain_affine component=Tdnn_pre_final_chain_affine input=Tdnn_6_renorm input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_chain_relu component=Tdnn_pre_final_chain_relu input=Tdnn_pre_final_chain_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_chain_renorm component=Tdnn_pre_final_chain_renorm input=Tdnn_pre_final_chain_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_affine component=Tdnn_pre_final_xent_affine input=Tdnn_6_renorm input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_relu component=Tdnn_pre_final_xent_relu input=Tdnn_pre_final_xent_affine input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_renorm component=Tdnn_pre_final_xent_renorm input=Tdnn_pre_final_xent_relu input-dim=625 output-dim=625&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Final_affine component=Final_affine input=Tdnn_pre_final_chain_renorm input-dim=625 output-dim=6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;&lt;b&gt;output-node name=output input=Final_affine dim=6105 objective=linear&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Final-xent_affine component=Final-xent_affine input=Tdnn_pre_final_xent_renorm input-dim=625 output-dim=6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;component-node name=Final-xent_log_softmax component=Final-xent_log_softmax input=Final-xent_affine input-dim=6105 output-dim=6105&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;&lt;b&gt;output-node name=output-xent input=Final-xent_log_softmax dim=6105 objective=linear&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
The solution removes chain output node, removes orphans as some of the nodes are not necessary anymore, and finally renames the xent output. Now we can do the edits:&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: white; color: #292929;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;nnet3-am-copy --edits=&#39;remove-output-nodes name=output;remove-orphans;rename-node old-name=output-xent new-name=output&#39; final.mdl final.xent.mdl&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;LOG (nnet3-am-copy:ReadEditConfig():nnet-utils.cc:687) Removing 1 output nodes. &lt;/span&gt;&lt;br /&gt;LOG (nnet3-am-copy:RemoveSomeNodes():nnet-nnet.cc:885) Removed 1 orphan nodes. &lt;br /&gt;LOG (nnet3-am-copy:RemoveSomeNodes():nnet-nnet.cc:885) Removed 8 orphan nodes. &lt;br /&gt;LOG (nnet3-am-copy:RemoveOrphanComponents():nnet-nnet.cc:810) Removing 4 orphan components. &lt;br /&gt;LOG (nnet3-am-copy:main():nnet3-am-copy.cc:156) Copied neural net from final.mdl to final.xent.mdl&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
Finally, let&#39;s look at the&amp;nbsp;modified structure:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: xx-small;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;nnet3-am-info final.xent.mdl &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;input-dim: 20 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ivector-dim: -1 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;num-pdfs: 6105 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;prior-dimension: 0 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;# Nnet info follows. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;left-context: 15 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;right-context: 15 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;num-parameters: 11286105 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;modulus: 1 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;input-node name=input dim=20 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=L0_fixaffine component=L0_fixaffine input=Append(Offset(input, -1), input, Offset(input, 1)) input-dim=60 output-dim=60 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_0_affine component=Tdnn_0_affine input=L0_fixaffine input-dim=60 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_0_relu component=Tdnn_0_relu input=Tdnn_0_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_0_renorm component=Tdnn_0_renorm input=Tdnn_0_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_1_affine component=Tdnn_1_affine input=Append(Offset(Tdnn_0_renorm, -1), Tdnn_0_renorm, Offset(Tdnn_0_renorm, 1)) input-dim=1875 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_1_relu component=Tdnn_1_relu input=Tdnn_1_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_1_renorm component=Tdnn_1_renorm input=Tdnn_1_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_2_affine component=Tdnn_2_affine input=Append(Offset(Tdnn_1_renorm, -1), Tdnn_1_renorm, Offset(Tdnn_1_renorm, 1)) input-dim=1875 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_2_relu component=Tdnn_2_relu input=Tdnn_2_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_2_renorm component=Tdnn_2_renorm input=Tdnn_2_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_3_affine component=Tdnn_3_affine input=Append(Offset(Tdnn_2_renorm, -3), Tdnn_2_renorm, Offset(Tdnn_2_renorm, 3)) input-dim=1875 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_3_relu component=Tdnn_3_relu input=Tdnn_3_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_3_renorm component=Tdnn_3_renorm input=Tdnn_3_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_4_affine component=Tdnn_4_affine input=Append(Offset(Tdnn_3_renorm, -3), Tdnn_3_renorm, Offset(Tdnn_3_renorm, 3)) input-dim=1875 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_4_relu component=Tdnn_4_relu input=Tdnn_4_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_4_renorm component=Tdnn_4_renorm input=Tdnn_4_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_5_affine component=Tdnn_5_affine input=Append(Offset(Tdnn_4_renorm, -3), Tdnn_4_renorm, Offset(Tdnn_4_renorm, 3)) input-dim=1875 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_5_relu component=Tdnn_5_relu input=Tdnn_5_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_5_renorm component=Tdnn_5_renorm input=Tdnn_5_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_6_affine component=Tdnn_6_affine input=Append(Offset(Tdnn_5_renorm, -3), Tdnn_5_renorm, Offset(Tdnn_5_renorm, 3)) input-dim=1875 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_6_relu component=Tdnn_6_relu input=Tdnn_6_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_6_renorm component=Tdnn_6_renorm input=Tdnn_6_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_affine component=Tdnn_pre_final_xent_affine input=Tdnn_6_renorm input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_relu component=Tdnn_pre_final_xent_relu input=Tdnn_pre_final_xent_affine input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Tdnn_pre_final_xent_renorm component=Tdnn_pre_final_xent_renorm input=Tdnn_pre_final_xent_relu input-dim=625 output-dim=625 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Final-xent_affine component=Final-xent_affine input=Tdnn_pre_final_xent_renorm input-dim=625 output-dim=6105 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;component-node name=Final-xent_log_softmax component=Final-xent_log_softmax input=Final-xent_affine input-dim=6105 output-dim=6105 &lt;/span&gt;&lt;br /&gt;&lt;b style=&quot;font-size: small;&quot;&gt;output-node name=output input=Final-xent_log_softmax dim=6105 objective=linear&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Cool, it worked!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/4077105390347418081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/4077105390347418081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/4077105390347418081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/4077105390347418081'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2017/10/kaldi-editing-nnet3-chain-model.html' title='kaldi editing nnet3 chain model - using the auxiliary xent output as the main output'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-8183741991747373191</id><published>2015-01-21T11:37:00.001+01:00</published><updated>2015-01-21T11:37:07.511+01:00</updated><title type='text'>Filip Jurčíček: „Zajímá mě přirozenost komunikace pomocí hlasu“</title><content type='html'>&lt;a href=&quot;http://www.matfyz.cz/clanky/214-filip-jurcicek-zajima-me-prirozenost-komunikace-pomoci-hlasu&quot;&gt;Filip Jurčíček: „Zajímá mě přirozenost komunikace pomocí hlasu“&lt;/a&gt;: &lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/8183741991747373191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/8183741991747373191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/8183741991747373191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/8183741991747373191'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2015/01/filip-jurcicek-zajima-me-prirozenost.html' title='Filip Jurčíček: „Zajímá mě přirozenost komunikace pomocí hlasu“'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-4791936745346899311</id><published>2014-03-16T14:02:00.001+01:00</published><updated>2014-03-16T14:02:41.004+01:00</updated><title type='text'>Online SVM</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
An exact solution to the problem of online SVM learning has been found by Cauwenberghs and Poggio (2001). Their incremental algorithm (hereinafter referred to as a C&amp;amp;P algorithm) updates an optimal solution of an SVM training problem after one training example is added (or removed).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/4791936745346899311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/4791936745346899311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/4791936745346899311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/4791936745346899311'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2014/03/online-svm.html' title='Online SVM'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-6554759020859680098</id><published>2013-07-24T00:50:00.001+02:00</published><updated>2013-07-24T00:50:50.019+02:00</updated><title type='text'>How to maintain a successful open source project — Medium</title><content type='html'>Very inspiring.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://medium.com/p/aaa2a5437d3a&quot;&gt;How to maintain a successful open source project — Medium&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/6554759020859680098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/6554759020859680098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/6554759020859680098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/6554759020859680098'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2013/07/how-to-maintain-successful-open-source.html' title='How to maintain a successful open source project — Medium'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-792035060574699469</id><published>2013-06-19T20:53:00.001+02:00</published><updated>2013-06-19T20:53:30.391+02:00</updated><title type='text'>Backup your hard drive over the network with dd and ssh</title><content type='html'>&lt;a href=&quot;http://www.pantz.org/software/dd/drivecopywithsshanddd.html&quot;&gt;Backup your hard drive over the network with dd and ssh&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
Citation:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: verdana, arial, helvetica, sans-serif; font-size: 11px;&quot;&gt;... wanted to copy everything off the disk and send it over the network. So we can do it with ssh. First zero out the non used space on the running disk to make compressing the image much eaiser. Using the command:&lt;/div&gt;&lt;div class=&quot;command&quot; style=&quot;background-color: white; border: 1px dashed rgb(0, 0, 255); font-family: &#39;Courier New&#39;, Courier, mono; font-size: 12px; font-style: italic; font-weight: 600; padding: 10px;&quot;&gt;dd if=/dev/zero of=0bits bs=20M; rm 0bits&lt;/div&gt;&lt;div style=&quot;font-family: verdana, arial, helvetica, sans-serif; font-size: 11px;&quot;&gt;Then boot knoppix (or any other bootable linux distro like sysrescuecd) from the machine you want to image and give the command:&lt;/div&gt;&lt;div class=&quot;command&quot; style=&quot;background-color: white; border: 1px dashed rgb(0, 0, 255); font-family: &#39;Courier New&#39;, Courier, mono; font-size: 12px; font-style: italic; font-weight: 600; padding: 10px;&quot;&gt;dd if=/dev/sda | gzip -1 - | ssh user@hostname dd of=image.gz&lt;/div&gt;&lt;div style=&quot;font-family: verdana, arial, helvetica, sans-serif; font-size: 11px;&quot;&gt;Assuming sda is your hard drive. This sends the local disks data to the remote machine. To restore the image boot knoppix on the machine to restore and pull the image that you created and dump it back with the command:&lt;/div&gt;&lt;div class=&quot;command&quot; style=&quot;background-color: white; border: 1px dashed rgb(0, 0, 255); font-family: &#39;Courier New&#39;, Courier, mono; font-size: 12px; font-style: italic; font-weight: 600; padding: 10px;&quot;&gt;ssh user@hostname dd if=image.gz | gunzip -1 - | dd of=/dev/sda&lt;/div&gt;&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/792035060574699469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/792035060574699469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/792035060574699469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/792035060574699469'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2013/06/backup-your-hard-drive-over-network.html' title='Backup your hard drive over the network with dd and ssh'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-1799621866795782498</id><published>2013-06-19T12:10:00.001+02:00</published><updated>2013-06-19T12:10:09.753+02:00</updated><title type='text'>php strict warnings | Drupal Groups</title><content type='html'>&lt;a href=&quot;https://groups.drupal.org/node/217529&quot;&gt;php strict warnings | Drupal Groups&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;comment comment-published clear-block comment-even comment-with-picture&quot; style=&quot;background-color: white; border-top-color: rgb(216, 216, 210); border-top-style: solid; border-width: 1px 0px 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, &#39;DejaVu Sans&#39;, &#39;Bitstream Vera Sans&#39;, Verdana, Arial, sans-serif; font-size: 13px; line-height: 17.984375px; margin: 0.692em 0px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;comment-inner&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;content&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;clear-block&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;background-color: transparent; border: 0px; margin-bottom: 1.385em; padding: 0px; vertical-align: baseline;&quot;&gt;Thanks, forcing 5.2 worked.&lt;/div&gt;&lt;/div&gt;&lt;ul class=&quot;links&quot; style=&quot;background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; color: #666666; float: right; font-size: 0.923em; line-height: 1.5em; list-style: none none; margin: 0px 0px 0.75em; overflow: hidden; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;li class=&quot;comment_forbidden first&quot; style=&quot;background-color: transparent; border: 0px; display: inline; list-style-image: none; list-style-type: none; margin: 0px; padding: 0px 0.5em 0px 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;https://groups.drupal.org/user/login?destination=node%2F217529%23comment-form&quot; style=&quot;background-color: transparent; border: 0px; color: #0678be; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Login&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href=&quot;https://groups.drupal.org/user/register?destination=node%2F217529%23comment-form&quot; style=&quot;background-color: transparent; border: 0px; color: #0678be; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;register&lt;/a&gt;&amp;nbsp;to post comments&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;vud_comment_votes_count last&quot; style=&quot;background-color: transparent; border: 0px; display: inline; list-style-image: none; list-style-type: none; margin: 0px; padding: 0px 0.5em 0px 0px; vertical-align: baseline;&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;a href=&quot;&quot; id=&quot;comment-826138&quot; style=&quot;background-color: white; border: 0px; color: #0678be; font-family: &#39;Lucida Grande&#39;, &#39;DejaVu Sans&#39;, &#39;Bitstream Vera Sans&#39;, Verdana, Arial, sans-serif; font-size: 13px; line-height: 17.984375px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/a&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;Lucida Grande&#39;, &#39;DejaVu Sans&#39;, &#39;Bitstream Vera Sans&#39;, Verdana, Arial, sans-serif; font-size: 13px; line-height: 17.984375px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;comment comment-published clear-block comment-odd comment-with-picture&quot; style=&quot;background-color: white; border-top-color: rgb(216, 216, 210); border-top-style: solid; border-width: 1px 0px 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, &#39;DejaVu Sans&#39;, &#39;Bitstream Vera Sans&#39;, Verdana, Arial, sans-serif; font-size: 13px; line-height: 17.984375px; margin: 0.692em 0px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;comment-inner&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;comment-heading&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;h3 class=&quot;comment-title&quot; style=&quot;background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; color: #888888; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 1.231em; line-height: 1.6875em; margin: 0px; padding: 0px; vertical-align: baseline; word-spacing: 0.2em;&quot;&gt;&lt;a class=&quot;active&quot; href=&quot;https://groups.drupal.org/node/217529#comment-826138&quot; style=&quot;background-color: transparent; border: 0px; color: #0678be; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline; word-spacing: normal;&quot;&gt;Disabling warnings from php strict in Drupal&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;submitted&quot; style=&quot;background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; color: #666666; font-size: 0.923em; line-height: 1.5em; margin: 0px 0px 0.75em; padding: 0px; vertical-align: baseline;&quot;&gt;Posted by&amp;nbsp;&lt;a href=&quot;https://groups.drupal.org/user/34390&quot; style=&quot;background-color: transparent; border: 0px; color: #0678be; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot; title=&quot;View user profile.&quot;&gt;DarrellDuane&lt;/a&gt;&amp;nbsp;on&amp;nbsp;&lt;em style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;September 26, 2012 at 3:21pm&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;content&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;clear-block&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;picture&quot; style=&quot;background-color: transparent; border: 0px; float: right; margin: 0px 0px 1.5em 1.5em; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;https://groups.drupal.org/user/34390&quot; style=&quot;background-color: transparent; border: 0px; color: #0678be; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot; title=&quot;View user profile.&quot;&gt;&lt;img alt=&quot;DarrellDuane&#39;s picture&quot; src=&quot;https://groups.drupal.org/files/pictures/picture-34390.jpg&quot; style=&quot;background-color: transparent; border: 0px; height: auto; max-width: 100%; padding: 0px; vertical-align: baseline;&quot; title=&quot;DarrellDuane&#39;s picture&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;background-color: transparent; border: 0px; margin-bottom: 1.385em; padding: 0px; vertical-align: baseline;&quot;&gt;I&#39;m well aware that hacking core is frowned upon, but sometimes ya gotta do what ya gotta do. Running drupal 6 with views 2.x using PHP 5.4 (Fedora 17 in this case) yields a number of strict warnings that are not easily turned off. PHP doesn&#39;t allow you to turn off these strict warnings in its php.ini file, they come through even if E_STRICT is disabled, see&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/4692999/e-strict-messages-thrown-though-not-set&quot; style=&quot;background-color: transparent; border: 0px; color: #0678be; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot; title=&quot;http://stackoverflow.com/questions/4692999/e-strict-messages-thrown-though-not-set&quot;&gt;http://stackoverflow.com/questions/4692999/e-strict-messages-thrown-thou...&lt;/a&gt;&amp;nbsp;for more details.&lt;br /&gt;
In order to fix this, I have edited includes/bootstrap.inc and put the following at the beginning of function drupal_set_message starting after line 991:&lt;/div&gt;&lt;div style=&quot;background-color: transparent; border: 0px; margin-bottom: 1.385em; padding: 0px; vertical-align: baseline;&quot;&gt;// filter out strict warnings due to conflicts between views-2.x and PHP 5.4&lt;br /&gt;
if( !strncmp($message, &#39;strict warning:&#39;, 14) ) {&lt;br /&gt;
return isset($_SESSION[&#39;messages&#39;]) ? $_SESSION[&#39;messages&#39;] : NULL;&lt;br /&gt;
}&lt;/div&gt;&lt;div style=&quot;background-color: transparent; border: 0px; margin-bottom: 1.385em; padding: 0px; vertical-align: baseline;&quot;&gt;There may be other messages that come through that you want to filter in this manner as well.&lt;br /&gt;
If there is a hook that can be used to filter drupal messages or a cleaner way to do this by adding a module instead of hacking core I&#39;d love to hear about it.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/1799621866795782498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/1799621866795782498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/1799621866795782498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/1799621866795782498'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2013/06/php-strict-warnings-drupal-groups.html' title='php strict warnings | Drupal Groups'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-5120168772932347681</id><published>2013-02-22T18:09:00.001+01:00</published><updated>2013-02-22T18:09:54.344+01:00</updated><title type='text'>You and Your Research</title><content type='html'>&lt;a href=&quot;http://www.cs.virginia.edu/~robins/YouAndYourResearch.html&quot;&gt;You and Your Research&lt;/a&gt;: &quot;r. Somehow they seem to work on slightly the wrong thing - not much, but enough that they miss fame.&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/5120168772932347681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/5120168772932347681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/5120168772932347681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/5120168772932347681'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2013/02/you-and-your-research.html' title='You and Your Research'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-8609614737099945417</id><published>2012-09-21T09:07:00.001+02:00</published><updated>2012-09-21T09:07:55.079+02:00</updated><title type='text'>Ubuntu 11.04 and perlbrew installation problems · Issue #64 · gugod/App-perlbrew · GitHub</title><content type='html'>Those who have a problem compiling old versions of Perl on Ubuntu, might want to read the next article.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/gugod/App-perlbrew/issues/64&quot;&gt;Ubuntu 11.04 and perlbrew installation problems · Issue #64 · gugod/App-perlbrew · GitHub&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/8609614737099945417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/8609614737099945417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/8609614737099945417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/8609614737099945417'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/09/ubuntu-1104-and-perlbrew-installation.html' title='Ubuntu 11.04 and perlbrew installation problems · Issue #64 · gugod/App-perlbrew · GitHub'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-325973822268725786</id><published>2012-09-11T09:28:00.001+02:00</published><updated>2012-09-11T09:28:16.999+02:00</updated><title type='text'>VM Farms: Cross Process Locking and Synchronization in Python</title><content type='html'>Named locking in Python&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.vmfarms.com/2011/03/cross-process-locking-and.html&quot;&gt;VM Farms: Cross Process Locking and Synchronization in Python&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/325973822268725786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/325973822268725786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/325973822268725786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/325973822268725786'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/09/vm-farms-cross-process-locking-and.html' title='VM Farms: Cross Process Locking and Synchronization in Python'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-8052162942579155281</id><published>2012-07-30T15:20:00.001+02:00</published><updated>2012-07-30T15:20:32.256+02:00</updated><title type='text'>Julius • View topic - Using a SRILM N-gram on Julius</title><content type='html'>This is very important for those using Julius ASR. This is a must.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://julius.sourceforge.jp/forum/viewtopic.php?f=5&amp;amp;t=132&amp;amp;p=783&amp;amp;hilit=reverse+model#p783&quot;&gt;Julius • View topic - Using a SRILM N-gram on Julius&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/8052162942579155281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/8052162942579155281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/8052162942579155281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/8052162942579155281'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/07/julius-view-topic-using-srilm-n-gram-on.html' title='Julius • View topic - Using a SRILM N-gram on Julius'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-4634665618489261250</id><published>2012-07-25T10:00:00.001+02:00</published><updated>2012-07-25T10:00:30.349+02:00</updated><title type='text'>Introduction to ASR and HTK in particular</title><content type='html'>&lt;a href=&quot;http://www.comp.nus.edu.sg/~simkc/teaching.html&quot;&gt;Introduction to ASR and HTK in particular&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/4634665618489261250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/4634665618489261250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/4634665618489261250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/4634665618489261250'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/07/introduction-to-asr-and-htk-in.html' title='Introduction to ASR and HTK in particular'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-6252716641514573199</id><published>2012-07-24T10:51:00.001+02:00</published><updated>2012-07-24T10:51:31.289+02:00</updated><title type='text'>USING HTK</title><content type='html'>&lt;a href=&quot;http://www.ling.ohio-state.edu/~bromberg/htk_problems.html&quot;&gt;USING HTK&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;UNDERSTANDING HTK ERROR MESSAGES&lt;/h1&gt;&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/6252716641514573199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/6252716641514573199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/6252716641514573199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/6252716641514573199'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/07/using-htk.html' title='USING HTK'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-3693015230096198323</id><published>2012-07-19T15:39:00.001+02:00</published><updated>2012-07-19T15:39:52.052+02:00</updated><title type='text'>A nice tutorial for HTK</title><content type='html'>A nice tutorial about the HTK :&amp;nbsp;&lt;a href=&quot;http://my.fit.edu/~vkepuska/HTK/icassp06_tutorial.pdf&quot;&gt;http://my.fit.edu/~vkepuska/HTK/icassp06_tutorial.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/3693015230096198323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/3693015230096198323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3693015230096198323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3693015230096198323'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/07/a-nice-tutorial-for-htk.html' title='A nice tutorial for HTK'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-3068384729750956671</id><published>2012-07-19T15:06:00.001+02:00</published><updated>2012-07-19T15:06:26.579+02:00</updated><title type='text'>Information Theory, Pattern Recognition, and Neural Networks</title><content type='html'>One of the most interesting courses ever ;-)&lt;br /&gt;
&lt;br /&gt;
Watch the lectures 9 - 14!&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.inference.phy.cam.ac.uk/itprnn_lectures/&quot;&gt;Information Theory, Pattern Recognition, and Neural Networks&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/3068384729750956671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/3068384729750956671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3068384729750956671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/3068384729750956671'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/07/information-theory-pattern-recognition.html' title='Information Theory, Pattern Recognition, and Neural Networks'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-7427035960212752633</id><published>2012-04-22T22:15:00.001+02:00</published><updated>2012-04-22T22:15:04.293+02:00</updated><title type='text'>How do I sync multiple google calendars to my iPad.. It will only sync one. - Google Groups</title><content type='html'>&lt;a href=&quot;http://groups.google.com/a/googleproductforums.com/forum/#!topic/gmail/tvnjA1IG7xs&quot;&gt;How do I sync multiple google calendars to my iPad.. It will only sync one. - Google Groups&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
Use this:&amp;nbsp;&lt;a href=&quot;http://www.google.com/calendar/iphoneselect&quot; style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #6611cc; cursor: pointer; font-family: Arial, Helvetica, sans-serif; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;&quot; target=&quot;_blank&quot;&gt;www.google.com/calendar/&lt;wbr&gt;&lt;/wbr&gt;iphoneselect&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk&quot; style=&quot;font-size: 13px;&quot;&gt;&#39;via Blog this&#39;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/7427035960212752633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/7427035960212752633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/7427035960212752633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/7427035960212752633'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/04/how-do-i-sync-multiple-google-calendars.html' title='How do I sync multiple google calendars to my iPad.. It will only sync one. - Google Groups'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32050487.post-6946421468965789257</id><published>2012-01-28T21:54:00.001+01:00</published><updated>2012-01-28T22:02:02.591+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="machine learning"/><category scheme="http://www.blogger.com/atom/ns#" term="mathematics"/><category scheme="http://www.blogger.com/atom/ns#" term="statistics"/><title type='text'>Connection between MaxEnt and Logistic Regression</title><content type='html'>This is worth reading.&lt;br /&gt;
&lt;br /&gt;
McDonald, Ryan. 2007. &lt;a href=&quot;http://www.ryanmcd.com/courses/gslt2007/gslt2007.pdf&quot; target=&quot;_blank&quot;&gt;Generalized Linear Classifiers in NLP&lt;/a&gt;. Course presented to the Swedish Graduate School in Language Technology.</content><link rel='replies' type='application/atom+xml' href='http://bozskyfilip.blogspot.com/feeds/6946421468965789257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/32050487/6946421468965789257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/6946421468965789257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32050487/posts/default/6946421468965789257'/><link rel='alternate' type='text/html' href='http://bozskyfilip.blogspot.com/2012/01/connection-between-maxent-and-logistic.html' title='Connection between MaxEnt and Logistic Regression'/><author><name>BozdskyFilip</name><uri>http://www.blogger.com/profile/14336838304284341016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>