<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>名刺 on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/%E5%90%8D%E5%88%BA/</link>
		<description>Recent content in 名刺 on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Fri, 03 Jul 2020 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/%E5%90%8D%E5%88%BA/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>名刺の裏にニューラルネットワークプログラム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/</link>
				<pubDate>Fri, 03 Jul 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://imois.in/posts/card-network/&#34;&gt;Card Network&lt;/a&gt; は、名刺の裏に印刷されたコンパクトなニューラルネットワークのソースコードです。&lt;/p&gt;&#xA;&lt;p&gt;名刺の裏にソースコード、という他の人のアイデアを見たアイルランドの大学で計算機科学を学ぶ修士生の Oisin さんが選んだのは、小さなニューラルネットワークを作る 878文字のC++のコード。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;&#xA;&#xA;typedef float f;typedef std::vector&amp;lt;f&amp;gt; v;f K=0.01,R=0.01;struct L{int w,h,i;v W,x,z;L(int i,int o){W.resize(i*o);for(f&amp;amp;a:W)a=(rand()/(1.1-(1&amp;lt;&amp;lt;31))-0.5)/sqrt(i+o+0.);w=i;h=o;}v F(v X){x=X;v a(h);i=h*w;while(i--)a[i/w]+=W[i]*x[i%w];z=a;for(f&amp;amp;i:a)i=K&amp;gt;i?K:i;return a;}v B(v Y){v (w);i=w*h;while(i--){f Z=Y[i/w]*(z[i/w]&amp;gt;0?1:K);X[i%w]+=Z*W[i];W[i]-=R*Z*x[i%w];}return X;}};int main(){L n[]{L(40,50),L(50,50),L(50,1)};int l,z,k,i=500337;while(i--){z=242-i%243;k=40;v x(k),y;while(k--)x[k]=sin((k%2?z/27/3.:z%27/5.)+6.14*k/20);y=x;for(l=0;l&amp;lt;3;l++)y=n[l].F(y);v Y{2*(y[0]-(&amp;#34;\x1e\0\\0\b\x01\0@H\374\377B\x12@\x18\x12G\302\\x10@\x12\372\377\221\x10\0\0\200\0\0\0\\x02&amp;#34;[z/8]&amp;gt;&amp;gt;z%8&amp;amp;1))};while(l--)Y=n[l].B(Y);putchar(&amp;#34; .,-*oO##&amp;#34;[(int)(y[0]*8)%9]);if(i%27&amp;lt;1)puts(i?i%243?&amp;#34;&amp;#34;:&amp;#34;\033[9A&amp;#34;:&amp;#34;\r\   --- Oisin Carroll ---\n\ gh:Oisincar  web:imois.in&amp;#34;);}}&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-running.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-running_hu_e7b979b2babaea1d.webp 263w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-running.png&#34; width=&#34;263&#34; height=&#34;169&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ここではCのstructで3層のニューラルネットワークを作り、Oisin という名前の図形を表示できるように学習させています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-result.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-result_hu_e093263a483b6a0d.webp 381w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-result.png&#34; width=&#34;381&#34; height=&#34;341&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;エンジニアのスキルアピール、カンファレンスでの話題作り等に、自分の得意分野のコードをミニマムに名刺裏に掲載するアイデア、どうでしょうか。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
