<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>oekunのジム通いブログ</title>
<link>https://ameblo.jp/oekun/</link>
<atom:link href="https://rssblog.ameba.jp/oekun/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>ジム大好き！プロテイン大好き！</description>
<language>ja</language>
<item>
<title>グレイトパワー！</title>
<description>
<![CDATA[ <p>&nbsp;</p><p><a href="https://ameblo.jp/oekun/entry-12714942066.html" rel="noopener noreferrer" target="_blank">去年もやった</a>&nbsp;Power Technical Agency のカレンダー今年もやるぞ</p><p>&nbsp;</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://adventar.org/calendars/7539" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">CyberAgent PTA Advent Calendar 2022 - Adventar</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">PTAのアドベントカレンダー2022です！</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">adventar.org</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://adventar.org/og_image.png" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>oeは今ジムでちょうど流行のChatGPTを触っていたからそれについて書こうと思う</p><p>&nbsp;</p><p>ChatGPTとはなにか文章の入力に対してAIがウェイしてくれる、とてもヘブンなものだと思ってもらえばいいだろう</p><p>&nbsp;</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://chat.openai.com/chat" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">ChatGPT</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">A conversational AI system that listens, learns, and challenges</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">chat.openai.com</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://openai.com/content/images/2022/11/ChatGPT.jpg" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-family: -apple-system, BlinkMacSystemFont, sans-serif;">まずoeがよく聞かれる質問をGPってみよう</span></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20221202/12/oekun/db/82/p/o0717027515210961572.png"><img alt="" contenteditable="inherit" height="275" src="https://stat.ameba.jp/user_images/20221202/12/oekun/db/82/p/o0717027515210961572.png" width="717"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>そうなんだ、ウェイとは特定の単語ではない</p><p>&nbsp;</p><p>周囲の文脈によってどうにでもなるのがウェイだ！ウェイ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>とまあこんな感じで入力に対してAIが答えてくれるんだ。</p><p>&nbsp;</p><p>だが、ChatGPTのプッシュはそれだけではない。</p><p>&nbsp;</p><p>エンディニアにも嬉しい機能満載なんだ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickTag_root" style="text-align:center;"><div class="pickTag" contenteditable="false" data-aid="Y5tKNDckRmceThqcBSghr1" data-glasgow-layout="3" data-img-size="" data-img-url="https://stat.amebaad.jp/ad/amebapick/omakase/omakase_ad_thumbnail.png" data-layout-type="301" data-slot="injected" data-tag-id="AD000001" data-tag-type="auto_ad" style="display:inline-block;max-width:100%;width:336px;height:280px"><span style="display:inline-block;"><img alt="" data-img="affiliate" height="280" src="https://ssl-stat.amebame.com/pub/content/9477400408/amebapick/item/picktag_autoAd_301.png" style="box-sizing:border-box;border:1px solid rgba(8, 18, 26, 0.08);border-radius:4px;max-width:100%;max-height:100%" width="336"></span></div></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><h3><img alt="看板持ち" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char4/604.png" width="24">&nbsp;コード生成</h3><p>&nbsp;</p><p>例えばこんなの入れてみよう</p><p>&nbsp;</p><p><span style="color:#0000ff;">「オブジェクトの特定の値でキーをグループ化するコード」</span></p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20221202/12/oekun/1f/23/p/o0727113815210962704.png"><img alt="" contenteditable="inherit" height="1138" src="https://stat.ameba.jp/user_images/20221202/12/oekun/1f/23/p/o0727113815210962704.png" width="727"></a></p><p>&nbsp;</p><p>ウェイ！</p><p>&nbsp;</p><p>サンプルまで出してくれて震えるぜ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>標準でJSで出力されるがこうするとGoでも出してくれる</p><p>&nbsp;</p><p><span style="color:#0000ff;">「Golang</span>で<span style="color:#0000ff;">オブジェクトの特定の値でキーをグループ化するコード」</span></p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20221202/13/oekun/7e/c6/p/o0676091715210989271.png"><img alt="" contenteditable="inherit" height="917" src="https://stat.ameba.jp/user_images/20221202/13/oekun/7e/c6/p/o0676091715210989271.png" width="676"></a></p><p>&nbsp;</p><p>ウェイ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><h3><img alt="看板持ち" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char4/604.png" width="24"> リファクタ</h3><p>&nbsp;</p><p>&nbsp;</p><p>ChatGPTはコード生成するだけじゃなく、リファクタもしてくれるんだ</p><p>&nbsp;</p><p>こんなパワーコードがあったとしよう</p><p>&nbsp;</p><pre style="font-size:90%; background-color:#F6F6F6;padding:16px;">const oeIsPower = (oes: string[]): string[] =&gt; {  for (let i = 0; i &lt;= oes.length; i++) {    if (oes[i] == 'oe') {      oes[i] = oes[i] + ' is Power!!!';    }  }  return oes;};oeIsPower(['kuwahara','oe','murakami'])<span style="color:#009944;">→ &nbsp;['kuwahara', 'oe is Power!!!', 'murakami']</span></pre><p>&nbsp;</p><p>oeが3時間かかって絞り出したコードだ</p><p>&nbsp;</p><p>これをこんな感じで入力してやる</p><p>&nbsp;</p><p><span style="color:#0000ff;">以下をリファクタリング</span></p><p><span style="color:#0000ff;">```</span></p><p><span style="color:#0000ff;">const oeIsPower = (oes: string[]): string[] =&gt; {</span></p><p><span style="color:#0000ff;">&nbsp; for (let i = 0; i &lt;= oes.length; i++) {</span></p><p><span style="color:#0000ff;">&nbsp; &nbsp; if (oes[i] == 'oe') {</span></p><p><span style="color:#0000ff;">&nbsp; &nbsp; &nbsp; oes[i] = oes[i] + ' is Power!!!';</span></p><p><span style="color:#0000ff;">&nbsp; &nbsp; }</span></p><p><span style="color:#0000ff;">&nbsp; }</span></p><p><span style="color:#0000ff;">return oes;</span></p><p><span style="color:#0000ff;">};</span></p><p><span style="color:#0000ff;">```</span></p><p>&nbsp;</p><p>するとこうだ！</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20221202/13/oekun/28/56/p/o0674044015210991915.png"><img alt="" contenteditable="inherit" height="440" src="https://stat.ameba.jp/user_images/20221202/13/oekun/28/56/p/o0674044015210991915.png" width="674"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>フンッッッッッ！</p><p>&nbsp;</p><p>oeもトレーニングしてて、もっと効率のいいトレーニングないのだろうかって思うことがあるのだが、ChatGPTに問いかけようと思ったぜ</p><p>&nbsp;</p><p>&nbsp;</p><p>ちなみに、毎回同じ結果になるわけではない</p><p>&nbsp;</p><p>次同じのを打ったらこうなった</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20221202/13/oekun/92/84/p/o0670042115210992793.png"><img alt="" contenteditable="inherit" height="421" src="https://stat.ameba.jp/user_images/20221202/13/oekun/92/84/p/o0670042115210992793.png" width="670"></a></p><p>&nbsp;</p><p>ちょっと書式が違うよな</p><p>&nbsp;</p><p>とはいえ、最初のoeのパワーコードから考えたら、スマートになったな</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><h3><img alt="看板持ち" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char4/604.png" width="24"> テスト</h3><p>&nbsp;</p><p>テストって書くのめんどいよな！</p><p>&nbsp;</p><p>でもこれもGPってやろう</p><p>&nbsp;</p><p>こんな感じで入力してみる</p><p>&nbsp;</p><p><span style="color:#0000ff;">以下のテストコード</span></p><p><span style="color:#0000ff;">```</span></p><p><span style="color:#0000ff;">const oeIsPower = (oes: string[]): string[] =&gt;</span></p><p><span style="color:#0000ff;">&nbsp; &nbsp;oes.map((oe) =&gt; (oe === 'oe' ? oe + ' is Power!!!' : oe));</span></p><p><span style="color:#0000ff;">```</span></p><p>&nbsp;</p><p>するとこうだ！</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20221202/13/oekun/84/ba/p/o0669060015210994275.png"><img alt="" contenteditable="inherit" height="600" src="https://stat.ameba.jp/user_images/20221202/13/oekun/84/ba/p/o0669060015210994275.png" width="669"></a></p><p>&nbsp;</p><p>oe is Power！！！</p><p>&nbsp;</p><p>さすがだ。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>こんな感じでサクッとコード生成してくれるから、AIにまかせてトレーニングに没頭できるよな！</p><p>&nbsp;</p><p>これ以外にも使い方はoeの肉体並みに無限大だからいろんな活用ができそうだ。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>最後にoeをGPってみるか</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20221202/14/oekun/5b/50/p/o0730023415210996375.png"><img alt="" contenteditable="inherit" height="234" src="https://stat.ameba.jp/user_images/20221202/14/oekun/5b/50/p/o0730023415210996375.png" width="730"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>クワハラ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12777387617.html</link>
<pubDate>Fri, 02 Dec 2022 14:11:10 +0900</pubDate>
</item>
<item>
<title>筋肉を生成しろ！</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p>最近AIによる絵とか写真の自動生成が話題だな。</p><p>&nbsp;</p><p>MidjourneyとかStable Diffusionとか</p><p>&nbsp;</p><p>&nbsp;</p><p>そんなわけで、AIにもoeの存在感は伝わってるのか、Stable Diffusionでウェイしてみた</p><p>&nbsp;</p><p>&nbsp;</p><p>「oekun」でどうだ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20220826/12/oekun/8d/46/p/o0717078215165822711.png"><img alt="" height="458" src="https://stat.ameba.jp/user_images/20220826/12/oekun/8d/46/p/o0717078215165822711.png" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>おいおい、ふざけてるのかAI</p><p>&nbsp;</p><p>これはoeの先祖だろ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>まだパンプアップしてないAIにはサポートが必要なようだ。</p><p>&nbsp;</p><p>&nbsp;</p><p>「muscle oekun」と入れてやろう</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20220826/12/oekun/f3/b9/p/o0710078015165820890.png"><img alt="" height="461" src="https://stat.ameba.jp/user_images/20220826/12/oekun/f3/b9/p/o0710078015165820890.png" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>なんかバシ先出てないか？</p><p>&nbsp;</p><p>まぁマッスル感は正しいからいいとしよう</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>ついでにギャンブラー村上も生成してやるか</p><p>&nbsp;</p><p>&nbsp;</p><p>「poker boy murakami」</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20220826/13/oekun/db/cf/p/o0712078015165848653.png"><img alt="" height="460" src="https://stat.ameba.jp/user_images/20220826/13/oekun/db/cf/p/o0712078015165848653.png" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>ウェイ！！</p><p>&nbsp;</p><p>&nbsp;</p><p>右上なんてまさにオールインしたときの、目がイッてるムラカミだ！</p><p>&nbsp;</p><p>&nbsp;</p><p>震えたぜStable Diffusion</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickTag_root" style="text-align:center;"><div class="pickTag" contenteditable="false" data-aid="WP5oIpOq84qVlv65K1cG54" data-glasgow-layout="3" data-img-size="" data-img-url="https://stat.amebaad.jp/ad/amebapick/omakase/omakase_ad_thumbnail.png" data-layout-type="301" data-slot="injected" data-tag-id="AD000001" data-tag-type="auto_ad" style="display:inline-block;max-width:100%;width:336px;height:280px"><span style="display:inline-block;"><img alt="" data-img="affiliate" height="280" src="https://ssl-stat.amebame.com/pub/content/9477400408/amebapick/item/picktag_autoAd_301.png" style="box-sizing:border-box;border:1px solid rgba(8, 18, 26, 0.08);border-radius:4px;max-width:100%;max-height:100%" width="336"></span></div></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12760850281.html</link>
<pubDate>Fri, 26 Aug 2022 14:00:22 +0900</pubDate>
</item>
<item>
<title>ピッチャーoe</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p>お盆でoeは実家で高校野球を見ているんだが、</p><p>&nbsp;</p><p>&nbsp;</p><p>実はoeも学生の頃は球児だったんだ。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>途中でヘルニアで腰をフンッしてしまって辞めてしまったが</p><p>&nbsp;</p><p>&nbsp;</p><p>ピッチャーがバッターをウェイした後にモストマスキュってるのを見て</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20220812/10/oekun/7c/a0/j/o0640097415159454557.jpg"><img alt="" contenteditable="inherit" height="335" src="https://stat.ameba.jp/user_images/20220812/10/oekun/7c/a0/j/o0640097415159454557.jpg" width="220"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>なんて美しいんだって筋肉が震えたんだよな！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>そこからoeのベイスボールへの気持ちが再びパンプアップして、</p><p>&nbsp;</p><p>&nbsp;</p><p>思わずグローブを買った。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a class="pickCreative pickCreative_root" contenteditable="false" data-aid="6DVAkUtKD2vSqTetRfTcb1" data-df-item-id="B00189LO84" data-img-size="large" data-img-url="https://m.media-amazon.com/images/I/41fBczYNJlL._SL500_.jpg" data-item-id="AZ000001" data-layout-type="3" href="https://d.odsyms15.com/click?aid=6DVAkUtKD2vSqTetRfTcb1" id="6DVAkUtKD2vSqTetRfTcb1" target="_blank"><span class="pickLayout3_inner pickLayout3_inner--large" style="position:relative;display:inline-block;max-width:100%;width:240px;height:240px"><img alt="ゴールドジム(GOLD`S GYM) パワーグリップ プロ 3710 S(手首の太さ約16cm) 【初心者~プロ対応】 握力の補助 鍛えたい部位の集中トレーニング 懸垂 ラットプルダウン デッドリフト シーテッドローイング 【ゴールドジム正規品 ゴールドジムトレーナー愛用】" class="pickLayout3_img" data-img="affiliate" height="240" src="https://p.odsyms15.com/HIDOY5JzImZYBpZ8kU8Tz5" style="width:auto;height:auto;margin:auto; margin: auto;position:absolute;top:0;left:0;right:0;bottom:0;max-width:100%;max-height:100%" width="240"></span></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>大谷翔平と同じモデルのやつだぜ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12758380989.html</link>
<pubDate>Fri, 12 Aug 2022 10:51:13 +0900</pubDate>
</item>
<item>
<title>パワー！グローブ！</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p>ウェイ！やっとアッポできた</p><p>&nbsp;</p><p>久しぶりだな。</p><p>&nbsp;</p><p>最近はひたすら黙々とトレーニングをしていたせいで、こんなにパンプしたぜ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20220810/13/oekun/df/5c/p/o0628060215158616441.png"><img alt="" height="403" src="https://stat.ameba.jp/user_images/20220810/13/oekun/df/5c/p/o0628060215158616441.png" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>あまりにoeがパンプしたせいで、隣でトレーニングしていた人に</p><p>&nbsp;</p><p>「寄生獣ですか？」</p><p>&nbsp;</p><p>って言われたんだ</p><p>&nbsp;</p><p>&nbsp;</p><p>まぁある意味寄生獣かもな！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>だがトレーニングしすぎたせいで、腕を痛めてしまった</p><p>&nbsp;</p><p>何事もやりすぎはよくないな</p><p>&nbsp;</p><p>&nbsp;</p><p>そんなわけで今はギプスして生活している</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20220810/13/oekun/92/23/j/o2880134515158618011.jpg"><img alt="" height="196" src="https://stat.ameba.jp/user_images/20220810/13/oekun/92/23/j/o2880134515158618011.jpg" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>このギプス、oe特注なんだ！</p><p>&nbsp;</p><p>十字ボタンで場所を選び、強さを選択するとピンポイントでEMSしてくれるという</p><p>&nbsp;</p><p>ギプス付けたままトレーニングできるハイテクウェイだ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>ちなみに手の甲の黒光りしてる部分にはAIが入っている</p><p>&nbsp;</p><p>今やAIは欠かせないからな！</p><p>&nbsp;</p><p>そのうちゴルスタにも入るだろう</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickCreative_root" style="font-size:0"><article class="pickCreative_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="pickCreative pickLayout1" data-aid="19UeA2OZiLODhfX4lPap2t" data-df-item-id="B0847R1H3Y" data-img-size="small" data-img-url="https://m.media-amazon.com/images/I/41fYpoQH-rL._SL500_.jpg" data-item-id="AZ000001" data-layout-type="1" href="https://d.odsyms15.com/click?aid=19UeA2OZiLODhfX4lPap2t" id="19UeA2OZiLODhfX4lPap2t" style="background-color:#fff;border-radius:4px;box-sizing:border-box;display:block;max-width:100%;padding:8px;text-decoration:none;width:450px;font-family:ヒラギノ角ゴ Pro W3, Hiragino Kaku Gothic Pro, ＭＳ Ｐゴシック, Helvetica, Arial, sans-serif;line-height:1;font-weight:normal;font-style:normal;word-break:break-all" target="_blank"><div class="pickLayout1_inner" style="display:-webkit-box; display: flex"><div class="pickLayout1_imgWrapper pickLayout1_imgWrapper--small" style="position:relative;margin-right:16px;flex-shrink:0;width:96px;height:96px"><img alt="" class="pickLayout1_img pickLayout1_img--small" data-img="affiliate" height="96" src="https://p.odsyms15.com/V23iw3HLVkSVkKPzoGun76" style="width:auto;height:auto;margin:auto; margin: auto;position:absolute;top:0;left:0;right:0;bottom:0;max-width:100%;max-height:100%" width="96"></div><div class="pickLayout1_info" style="display:-webkit-box; display: flex;-webkit-box-flex:1;flex:1 1 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center"><div class="pickLayout1_title pickLayout1_title--small" style="-webkit-box-orient:vertical;display:-webkit-box;font-weight:bold;-webkit-line-clamp:2;overflow:hidden;color:#333;text-align:left;font-size:14px;margin-bottom:16px;line-height:1.5;height:42px">【国内正規品】Gold Standard 100% ホエイ ダブルリッチチョコレート 907g(2lb) 「ボトルタイプ」</div><div class="pickLayout1_advertiser pickLayout1_advertiser--small" style="font-size:10px;color:#757575;margin-bottom:8px;text-align:left">Amazon（アマゾン）</div><div class="pickLayout1_price pickLayout1_price--small" style="color:#333;text-align:left;font-size:14px">5,590〜5,780円</div></div></div></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12758077403.html</link>
<pubDate>Wed, 10 Aug 2022 17:22:37 +0900</pubDate>
</item>
<item>
<title>oeにまかせろ</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p>久々にブロってみたら、おまかせ広告というのが出てきて、amebloも進化してるんだなって思ってパンプアップしたぜ</p><p>&nbsp;</p><p>早速この下に入れてみるぞ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickTag_root" style="text-align:center;"><div class="pickTag" contenteditable="false" data-aid="LHgi0eTcxPl4yqZXu8SxN3" data-glasgow-layout="2" data-img-size="" data-img-url="https://stat.amebaad.jp/ad/amebapick/omakase/omakase_ad_thumbnail.png" data-layout-type="301" data-slot="injected" data-tag-id="AD000001" data-tag-type="auto_ad" style="display:inline-block;max-width:100%;width:300px;height:250px"><span style="display:inline-block;"><img alt="" data-img="affiliate" height="250" src="https://ssl-stat.amebame.com/pub/content/9477400408/amebapick/item/picktag_autoAd_301.png" style="box-sizing:border-box;border:1px solid rgba(8, 18, 26, 0.08);border-radius:4px;max-width:100%;max-height:100%" width="300"></span></div></div><p>&nbsp;</p><p>&nbsp;</p><p>どうだ、おまかせだからブロってる時点ではどんな広告出るかわからないが、多分oeのブログだから、ゴルスタのプロテインに違いないだろう</p><p>&nbsp;</p><p>ページを開いた時点の気分で、おすすめ味のプロテインが表示されていたら最高だな！</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12747531149.html</link>
<pubDate>Fri, 10 Jun 2022 16:49:43 +0900</pubDate>
</item>
<item>
<title>速さはパワー</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>前回同様PTAアドベントカレンダーの14日目だ！</p><p>&nbsp;</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://adventar.org/calendars/6450" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">CyberAgent PTA Advent Calendar 2021 - Adventar</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">adventar.org</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://adventar.org/og_image.png" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>ある日クワハラが</p><p>&nbsp;</p><p>「oekunさん、CPUよりGPUのがパワー！っすよ、パワー！」</p><p>&nbsp;</p><p>って言ってて、</p><p>&nbsp;</p><p>「おいおい、そんなの『ゴルスタのデリシャスストロベリーよりダブルリッチチョコレートっすよ』って言ってるようなものだろ！」</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickCreative_root" style="font-size:0"><article class="pickCreative_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="pickCreative pickLayout5 pickLayout5--small" data-aid="Hj6D1zN056RdyyXME79nG7" data-df-item-id="B0847R1H3Y" data-img-size="small" data-img-url="https://m.media-amazon.com/images/I/41fYpoQH-rL._SL500_.jpg" data-item-id="AZ000001" data-layout-type="5" href="https://d.odsyms15.com/click?aid=Hj6D1zN056RdyyXME79nG7" id="Hj6D1zN056RdyyXME79nG7" style="background-color:#fff;border-radius:4px;box-sizing:border-box;display:block;padding:8px;text-align:center;text-decoration:none;font-family:ヒラギノ角ゴ Pro W3, Hiragino Kaku Gothic Pro, ＭＳ Ｐゴシック, Helvetica, Arial, sans-serif;line-height:1;max-width:100%;font-weight:normal;font-style:normal;word-break:break-all;width:160px" target="_blank"><div class="pickLayout5_inner"><div class="pickLayout5_imgWrapper pickLayout5_imgWrapper--small" style="position:relative;margin:0 auto 16px;width:96px;height:96px"><img alt="" class="pickLayout5_img" data-img="affiliate" height="96" src="https://p.odsyms15.com/fOWJqVwb4zQQjBDoaX4Kz1" style="height:auto;width:auto;position:absolute;top:0;left:0;right:0;bottom:0;max-width:100%;max-height:100%;margin:auto" width="96"></div><div class="pickLayout5_info" style="text-align:left"><div class="pickLayout5_title pickLayout5_title--small" style="-webkit-box-orient:vertical;display:-webkit-box;font-size:14px;font-weight:bold;-webkit-line-clamp:2;line-height:1.5;margin-bottom:8px;overflow:hidden;color:#333;text-align:left;height:42px">【国内正規品】ON Gold Standard 100% ホエイ ダブルリッチチョコレート 907g(2lb) 「ボトルタイプ」</div><div class="pickLayout5_advertiser pickLayout5_advertiser--small" style="margin-bottom:8px;font-size:12px;color:#757575;text-align:left">Amazon（アマゾン）</div><div class="pickLayout5_price pickLayout5_price--small" style="font-size:14px;color:#333;text-align:left">4,851〜6,999円</div></div></div></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>って返したのだが、</p><p>&nbsp;</p><p>そういや実際どれくらいパワー！なのかって思ったんだよな。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>マッチョ界で筋肉の大きさがパワーなように、エンジニア界でも速度がパワーだ</p><p>&nbsp;</p><p>機械学習において、CPUよりGPUを使用したほうが速度がウェイなのはみんなも知ってると思うが、実際にどれくらいウェイするのかを検証した。</p><p>&nbsp;</p><p>&nbsp;</p><p>あくまで一例だからプロテイン呑みにするなよ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>検証で用意した教師データは、webサイトのテキストとサイトのカテゴリだ。</p><p>&nbsp;</p><p>今回はこれを用いてBERTで文章分類してみる。BERTは重いからな。</p><p>&nbsp;</p><p>BERTは何かって？そんなことは筋肉で察しろ</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://github.com/google-research/bert" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">TensorFlow code and pre-trained models for BERT. Contribute to google-research/bert development by creating an account on GitHub.</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">github.com</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://opengraph.githubassets.com/56a1f3605fe74f304e182cc32db3c261026165c59a292e30fc4eb722aae9f1f8/google-research/bert" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root"><p>まぁ、やりたい事はwebサイトのテキストがどのカテゴリに属するかをウェイすることだ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></div><p>&nbsp;</p><p style="text-align: center;"><img alt="牛しっぽ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/485.png" width="24">&nbsp;<span style="font-size:1.4em;">教師データ&nbsp;</span><img alt="牛あたま" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/487.png" width="24"><img alt="ハッ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/104.png" width="24"></p><p>&nbsp;</p><p><a href="https://www.rondhuit.com/download.html" rel="noopener noreferrer" target="_blank">livedoorニュースコーパス</a>を使おうかと思ったのだが、なんか古そうだったから、oeが自力で2000件強のwebサイトデータを用意した。</p><p>&nbsp;</p><p>2000件のデータなんて、プロテイン1杯にもならないだろうって？</p><p>&nbsp;</p><p>今回は学習の精度ではなくて、単にパワー！を見たいからこれくらいでOKだ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>これをどうやってカテゴライズするかって？そんなの目視に決まってるだろ！腕の筋トレだ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>データの中身はこんな感じだ。DBに突っ込んである</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20211213/16/oekun/e7/89/p/o0777012515045817553.png"><img alt="" contenteditable="inherit" height="125" src="https://stat.ameba.jp/user_images/20211213/16/oekun/e7/89/p/o0777012515045817553.png" width="777"></a></p><p>&nbsp;</p><p>contentsはWEBサイトのタイトル、description、本文テキスト全部ぶっ込んでいる</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p style="text-align: center;"><img alt="牛しっぽ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/485.png" width="24">&nbsp;<span style="font-size:1.4em;">環境&nbsp;</span><img alt="牛あたま" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/487.png" width="24"><img alt="ハッ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/104.png" width="24"></p><p>&nbsp;</p><p>検証する環境を紹介するぞ</p><p>&nbsp;</p><p>今回はwindows11のWSL上のubuntuにjupyter labを入れてそこで検証する。</p><p>&nbsp;</p><p>スペックはこうだ！</p><p>CPU: Ryzen7 3800XT</p><p>MEM: 32G</p><p>GPE: RTX2060</p><p>&nbsp;</p><p>&nbsp;</p><p>実はこれを検証したのは半年以上前なのだが、当時はwin11がまだ出ていなくて、win11のbeta版でやった。</p><p>&nbsp;</p><p>なぜならoeの環境ではwin10でのPyTorchでGPUがうまく動かなかったからだ！ギルティ！</p><p>&nbsp;</p><p>かなり手こずって危うくパソコンをフンッするところだったぜ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p style="text-align: center;"><img alt="牛しっぽ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/485.png" width="24">&nbsp;<span style="font-size:1.4em;">検証&nbsp;</span><img alt="牛あたま" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/487.png" width="24"><img alt="ハッ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/104.png" width="24"></p><p>&nbsp;</p><p>データが揃ったところで、これを学習用とトレーニング用に分けてモデル生成していく。</p><p>&nbsp;</p><p>ソースはこんな感じだ。</p><p>&nbsp;</p><pre style="font-size:90%; background-color:#F6F6F6;padding:16px;">from sqlalchemy import create_engine, bindparam, textimport numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import classification_reportimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimimport torchtextimport timefrom transformers import BertModelfrom transformers import AutoTokenizertokenizer = AutoTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')# GPUの設定device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")# CPUでやる場合はこっち# device = torch.device("cpu")engine = create_engine('mysql+mysqlconnector://root@localhost/power?charset=utf8')# 文章取得sql = '''    select         contents,         category     from         homepage'''df = pd.read_sql_query(sql, engine)# カテゴリ取得sqlc = '''    select         distinct category     from         homepage'''df_cate = pd.read_sql_query(sqlc, engine)categories = df_cate['category']id2cat = dict(zip(list(range(len(categories))), categories))cat2id = dict(zip(categories, list(range(len(categories)))))# DataFrameにカテゴリーID列を追加df['category_id'] = df['category'].map(cat2id)df = df.sample(frac=1).reset_index(drop=True)# データセットを本文とカテゴリーID列だけにするついでに整形df = df[['contents', 'category_id']]df['contents'] = df['contents'].replace("\t"," ", regex=True).replace("\n"," ", regex=True).replace("。"," ", regex=True).replace("、"," ", regex=True)df = df[~df['contents'].str.contains('404')]df = df[~df['contents'].str.contains('403')]display(df.head())# 学習データとテストデータに分けるtrain_df, test_df = train_test_split(df, train_size=0.8)train_df.to_csv('./data/train.tsv', sep='\t', index=False, header=None)test_df.to_csv('./data/test.tsv', sep='\t', index=False, header=None)# bertMAX_LENGTH = 512def bert_tokenizer(text):    return tokenizer.encode(text, max_length=MAX_LENGTH, truncation=True, return_tensors='pt')[0]TEXT = torchtext.legacy.data.Field(sequential=True, tokenize=bert_tokenizer, use_vocab=False, lower=False,                            include_lengths=True, batch_first=True, fix_length=MAX_LENGTH, pad_token=0)LABEL = torchtext.legacy.data.Field(sequential=False, use_vocab=False)train_data, test_data = torchtext.legacy.data.TabularDataset.splits(    path='./data/', train='train.tsv', test='test.tsv', format='tsv', fields=[('Text', TEXT), ('Label', LABEL)])BATCH_SIZE = 4train_iter, test_iter = torchtext.legacy.data.Iterator.splits((train_data, test_data), batch_sizes=(BATCH_SIZE, BATCH_SIZE), repeat=False, sort=False)class BertClassifier(nn.Module):    def __init__(self):        super(BertClassifier, self).__init__()        self.bert = BertModel.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking',                                              output_attentions=True,                                              output_hidden_states=True)        self.linear = nn.Linear(768*4, 10)        nn.init.normal_(self.linear.weight, std=0.02)        nn.init.normal_(self.linear.bias, 0)    def _get_cls_vec(self, vec):        return vec[:,0,:].view(-1, 768)    def forward(self, input_ids):        output = self.bert(input_ids)        attentions = output['attentions']        hidden_states = output['hidden_states']        vec1 = self._get_cls_vec(hidden_states[-1])        vec2 = self._get_cls_vec(hidden_states[-2])        vec3 = self._get_cls_vec(hidden_states[-3])        vec4 = self._get_cls_vec(hidden_states[-4])        vec = torch.cat([vec1, vec2, vec3, vec4], dim=1)        out = self.linear(vec)                return F.log_softmax(out, dim=1), attentionsclassifier = BertClassifier()for param in classifier.parameters():    param.requires_grad = Falsefor param in classifier.bert.encoder.layer[-1].parameters():    param.requires_grad = Truefor param in classifier.bert.encoder.layer[-2].parameters():    param.requires_grad = Truefor param in classifier.bert.encoder.layer[-3].parameters():    param.requires_grad = Truefor param in classifier.bert.encoder.layer[-4].parameters():    param.requires_grad = Truefor param in classifier.linear.parameters():    param.requires_grad = Trueoptimizer = optim.Adam([    {'params': classifier.bert.encoder.layer[-1].parameters(), 'lr': 5e-5},    {'params': classifier.bert.encoder.layer[-2].parameters(), 'lr': 5e-5},    {'params': classifier.bert.encoder.layer[-3].parameters(), 'lr': 5e-5},    {'params': classifier.bert.encoder.layer[-4].parameters(), 'lr': 5e-5},    {'params': classifier.linear.parameters(), 'lr': 1e-4}])loss_function = nn.NLLLoss()# 学習EPOCH_NUM = 5# 100回す方# EPOCH_NUM = 100start_time = time.perf_counter()classifier.to(device)losses = []for epoch in range(EPOCH_NUM):    all_loss = 0    for idx, batch in enumerate(train_iter):        classifier.zero_grad()        input_ids = batch.Text[0].to(device)        label_ids = batch.Label.to(device)        out, _ = classifier(input_ids)        print(label_ids)                batch_loss = loss_function(out, label_ids)        batch_loss.backward()        optimizer.step()        all_loss += batch_loss.item()                break    print("epoch", epoch, "\t" , "loss", all_loss)    end_time = time.perf_counter()elapsed_time = end_time - start_timeprint(elapsed_time)# 評価start_time = time.perf_counter()answer = []prediction = []with torch.no_grad():    for batch in test_iter:        text_tensor = batch.Text[0].to(device)        label_tensor = batch.Label.to(device)        score, _ = classifier(text_tensor)        _, pred = torch.max(score, 1)        prediction += list(pred.cpu().numpy())        answer += list(label_tensor.cpu().numpy())print(classification_report(prediction, answer, target_names=categories))end_time = time.perf_counter()elapsed_time = end_time - start_timeprint(elapsed_time)</pre><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>学習の部分と評価の部分をCPU、GPUそれぞれで速度を測った。</p><p>&nbsp;</p><p>&nbsp;</p><p>まずは5epoch</p><p>&nbsp;</p><p>lossがムラカミの志くらい高かったり、スコアがoeの脂肪率くらい低いのは気にしないでくれ。</p><p>&nbsp;</p><p>一番下が処理秒な</p><p>&nbsp;</p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;学習CPU （5epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211213/16/oekun/5f/5a/p/o0384023015045831689.png"><img alt="" height="230" src="https://stat.ameba.jp/user_images/20211213/16/oekun/5f/5a/p/o0384023015045831689.png" width="384"></a></p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;学習GPU （5epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211213/16/oekun/11/6a/p/o0386023615045831690.png"><img alt="" contenteditable="inherit" height="236" src="https://stat.ameba.jp/user_images/20211213/16/oekun/11/6a/p/o0386023615045831690.png" width="386"></a></p><p>&nbsp;</p><p>5エポックでおよそ3倍の速度が出ている</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;評価CPU （5epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211213/17/oekun/67/27/p/o0588038515045839184.png"><img alt="" contenteditable="inherit" height="385" src="https://stat.ameba.jp/user_images/20211213/17/oekun/67/27/p/o0588038515045839184.png" width="588"></a></p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;評価GPU （5epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211213/17/oekun/d0/45/p/o0590038315045839117.png"><img alt="" contenteditable="inherit" height="383" src="https://stat.ameba.jp/user_images/20211213/17/oekun/d0/45/p/o0590038315045839117.png" width="590"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>評価の方はCPUは140秒、CUDAの方は9.6秒</p><p>およそ14倍速い</p><p>&nbsp;</p><p>140秒あれば、oeならジムに行ってフンっしてシャワーまで浴びれるだろう</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>次に100epoch</p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;学習CPU （100epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211214/10/oekun/fc/49/p/o0379042915046163863.png"><img alt="" height="429" src="https://stat.ameba.jp/user_images/20211214/10/oekun/fc/49/p/o0379042915046163863.png" width="379"></a></p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;学習GPU （100epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211214/10/oekun/14/81/p/o0389042515046164056.png"><img alt="" height="425" src="https://stat.ameba.jp/user_images/20211214/10/oekun/14/81/p/o0389042515046164056.png" width="389"></a></p><p>&nbsp;</p><p>CPUが235秒に対し、CUDAが19秒</p><p>およそ12倍だ</p><p>&nbsp;</p><p>エポればエポるほどこの差は開くだろう</p><p>&nbsp;</p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;評価CPU （100epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211214/10/oekun/84/89/p/o0585038915046164659.png"><img alt="" contenteditable="inherit" height="389" src="https://stat.ameba.jp/user_images/20211214/10/oekun/84/89/p/o0585038915046164659.png" width="585"></a></p><p>&nbsp;</p><p><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;評価GPU （100epoch）</p><p><a href="https://stat.ameba.jp/user_images/20211214/10/oekun/b0/73/p/o0581038515046164824.png"><img alt="" contenteditable="inherit" height="385" src="https://stat.ameba.jp/user_images/20211214/10/oekun/b0/73/p/o0581038515046164824.png" width="581"></a></p><p>&nbsp;</p><p>評価の方は5epochとほぼ一緒だ。まぁそうだろう。</p><p>&nbsp;</p><p>その代わり100エポったら精度が上がったな</p><p>&nbsp;</p><p>&nbsp;</p><p>まさにoeのトレーニングと同じだ！</p><p>&nbsp;</p><p>oeだったら1万エポくらいしちゃうが、みんなは10エポくらいにしておけ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p style="text-align: center;"><span style="font-size:1.4em;"><img alt="魚しっぽ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/488.png" width="24">&nbsp;まとめ&nbsp;<img alt="魚あたま" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/490.png" width="24"><img alt="ハッ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/104.png" width="24"></span></p><p>&nbsp;</p><p>CPUだと遅い。</p><p>&nbsp;</p><p>まさに子供がやるプロテインシェイクのようだ</p><p>&nbsp;</p><p>&nbsp;</p><p>それに比べGPUはパワー！だ</p><p>&nbsp;</p><p>RTX2060みたいな型落ちでもこれくらいの速度がでるので、今のやつだともっとパワー！だろう。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>そんなわけで、今回はGPUで学習するとパワーだ！ってのを紹介した。</p><p>&nbsp;</p><p>oeの筋肉にもGPU埋め込みたいぜ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickCreative_root" style="font-size:0"><article class="pickCreative_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="pickCreative pickLayout1" data-aid="irG2CwyG4Qpn9brQrb6Is5" data-df-item-id="B08Z83QKWX" data-img-size="small" data-img-url="https://m.media-amazon.com/images/I/41d1G-3bPvS._SL500_.jpg" data-item-id="AZ000001" data-layout-type="1" href="https://d.odsyms15.com/click?aid=irG2CwyG4Qpn9brQrb6Is5" id="irG2CwyG4Qpn9brQrb6Is5" style="background-color:#fff;border-radius:4px;box-sizing:border-box;display:block;max-width:100%;padding:8px;text-decoration:none;width:450px;font-family:ヒラギノ角ゴ Pro W3, Hiragino Kaku Gothic Pro, ＭＳ Ｐゴシック, Helvetica, Arial, sans-serif;line-height:1;font-weight:normal;font-style:normal;word-break:break-all" target="_blank"><div class="pickLayout1_inner" style="display:-webkit-box; display: flex"><div class="pickLayout1_imgWrapper pickLayout1_imgWrapper--small" style="position:relative;margin-right:16px;flex-shrink:0;width:96px;height:96px"><img alt="" class="pickLayout1_img pickLayout1_img--small" data-img="affiliate" height="96" src="https://p.odsyms15.com/uOExFnfsoZiqncIhFkpcn1" style="width:auto;height:auto;margin:auto; margin: auto;position:absolute;top:0;left:0;right:0;bottom:0;max-width:100%;max-height:100%" width="96"></div><div class="pickLayout1_info" style="display:-webkit-box; display: flex;-webkit-box-flex:1;flex:1 1 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center"><div class="pickLayout1_title pickLayout1_title--small" style="-webkit-box-orient:vertical;display:-webkit-box;font-weight:bold;-webkit-line-clamp:2;overflow:hidden;color:#333;text-align:left;font-size:14px;margin-bottom:16px;line-height:1.5;height:42px">MSI GeForce RTX 3060 AERO ITX 12G OC グラフィックスボード VD7870</div><div class="pickLayout1_advertiser pickLayout1_advertiser--small" style="font-size:10px;color:#757575;margin-bottom:8px;text-align:left">Amazon（アマゾン）</div><div class="pickLayout1_price pickLayout1_price--small" style="color:#333;text-align:left;font-size:14px">69,600〜75,260円</div></div></div></a><ul class="addShopLink_list" style="max-width:450px;padding:0;font-weight:bold;font-size:14px;font-family:Hiragino Kaku Gothic Pro;margin:0;list-style:none"></ul></article></div><p>&nbsp;</p><div class="pickCreative_root" style="font-size:0">&nbsp;</div><p></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12714942066.html</link>
<pubDate>Tue, 14 Dec 2021 17:06:37 +0900</pubDate>
</item>
<item>
<title>クリエイティブエンディン</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p><a href="https://ameblo.jp/oekun/entry-12641389289.html" rel="noopener noreferrer" target="_blank">去年もやった</a> Power Technical Agency のカレンダー今年もやるぞ</p><p>&nbsp;</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://adventar.org/calendars/6450" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">CyberAgent PTA Advent Calendar 2021 - Adventar</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">adventar.org</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://adventar.org/og_image.png" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">一応、PTAは広告技術をパワーでウェイする集団だ。広告を扱うエンジニア集団だと思ってもらえばいいだろう。</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><p>&nbsp;</p><p>&nbsp;</p><p>今日12/11は最後までカレンダーが空いてたので、クワハラに書いたらどうだって言ったのだが</p><p>&nbsp;</p><p>「へへっ、その日は国際山岳デーなので、富士山ダッシュで行ってきます、へへっ」</p><p>&nbsp;</p><p>ってかわされたので、oeが書くことにした。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>ちょうど今週、<a href="https://ameblo.jp/oekun/entry-12684872445.html" rel="noopener noreferrer" target="_blank">クワハラとテラサワ</a>、そして<a href="https://ameblo.jp/oekun/entry-12684652352.html" rel="noopener noreferrer" target="_blank">ギャンブラームラカミ</a>が「クリエイティブエンディン」なるものをリリースしたんだ。</p><p>&nbsp;</p><p>その機能をサンプルソースを交えて、想像で紹介してやろう。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-size:1.4em;">クリエイティブエンディン</span></p><p>&nbsp;</p><p>クリエイティブと付いている通り、バナー広告のバナー画像をいい感じに自動生成し、機械学習を用いて効果が高いものを配信するといったスィステムだ</p><p>&nbsp;</p><p>今までは、完成形のバナー画像をそのまま入稿し配信していた。</p><p>&nbsp;</p><p>それを、素材とテキストを入稿するだけで最適なバナー画像をウェイするようにした。</p><p>&nbsp;</p><p>そして、逐次生成したものを学習していき常にマッスルウェイなバナー画像を配信するようにしたんだ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>今回は学習の部分は一旦置いておいて、バナー画像生成の部分を紹介するぞ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-size:1.4em;">バナー画像生成</span></p><p>&nbsp;</p><p>画像編集といえば、ImageMagickあたりがムラカミでも知っているところだろう。</p><p>&nbsp;</p><p>だが今回はAPIとの親和性を持たせるため、Jimpを使った</p><p>&nbsp;</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://github.com/oliver-moran/jimp" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">GitHub - oliver-moran/jimp: An image processing library written entirely in JavaScript for Node, with zero external or native dependencies.</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">An image processing library written entirely in JavaScript for Node, with zero external or native dependencies. - GitHub - oliver-moran/jimp: An image processing library written en…</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">github.com</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://opengraph.githubassets.com/5647fe2c8c8dbd473fd7738c7fd5c47824b1cf92eb3568fdf5154cb6e35a6d89/oliver-moran/jimp" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>オリバーが作ってるJavascriptの画像編集モジュールと言ったところか。</p><p>&nbsp;</p><p>このモジュールはバチクソ簡単に画像編集ができる。</p><p>&nbsp;</p><p>クワハラがwindowsのペイントを開いてる時間で、全てが完了してるだろう。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-size:1.4em;">サンプルバナー</span></p><p>&nbsp;</p><p>サンプルとして、oeジムのバナー画像を生成してやろう</p><p>&nbsp;</p><p>ベースの画像がこれで</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20211208/16/oekun/1a/18/j/o0200028115043418585.jpg"><img alt="" height="281" src="https://stat.ameba.jp/user_images/20211208/16/oekun/1a/18/j/o0200028115043418585.jpg" width="200"></a>&nbsp;</p><p>&nbsp;</p><p>テキストは「oekunジム渋谷ダッシュ1分」だ</p><p>&nbsp;</p><p>これを使って300x250のバナー画像を生成するぞ</p><p>&nbsp;</p><p>ちなみに言っておくが、oeはジムをオープンする予定はない。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>ソースもとても簡素だ</p><p>&nbsp;</p><pre style="font-size:90%; background-color:#F6F6F6;padding:16px;">const Jimp = require('jimp');const fs = require('fs');const text2png = require('text2png');text2png('with custom fonts', {  font: 'M+ 1p',  localFontPath: './fonts/mplus-1p-heavy.ttf',  localFontName: 'M+ 1p'});fs.writeFileSync('text.png', text2png('oekunジム 渋谷ダッシュ1分', {    font: '80px "M+ 1p"',    color: 'white',    textAlign: 'center',    lineSpacing: 20    }));(async function(){  const image = await new Jimp(300, 250, '#000000');  const photo = await Jimp.read('oekun.jpg');  await photo.resize(300, Jimp.AUTO);  await image.blit(photo, 0, 0);  const text = await Jimp.read('text.png');  await text.resize(280, Jimp.AUTO);  await image.blit(text, 10, 50);  image.writeAsync('out.png');})();</pre><p>&nbsp;</p><p>&nbsp;</p><p>これでこうだ！</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20211208/16/oekun/9d/9c/p/o0300025015043419017.png"><img alt="" height="250" src="https://stat.ameba.jp/user_images/20211208/16/oekun/9d/9c/p/o0300025015043419017.png" width="300"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>ポイントはテキストをtext2pngで画像にしてから上に重ねてるところだな</p><p>&nbsp;</p><p>こんな感じで画像の配置は自由自在だ</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20211208/16/oekun/52/6a/p/o0300025015043423247.png"><img alt="" height="250" src="https://stat.ameba.jp/user_images/20211208/16/oekun/52/6a/p/o0300025015043423247.png" width="300"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>ぼかしやポスタリゼーションなどのフィルタも簡単にウェイだ！</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20211208/16/oekun/e6/ec/p/o0300025015043423496.png"><img alt="" height="250" src="https://stat.ameba.jp/user_images/20211208/16/oekun/e6/ec/p/o0300025015043423496.png" width="300"></a></p><p><a href="https://stat.ameba.jp/user_images/20211208/16/oekun/63/26/p/o0300025015043423738.png"><img alt="" height="250" src="https://stat.ameba.jp/user_images/20211208/16/oekun/63/26/p/o0300025015043423738.png" width="300"></a></p><p>&nbsp;</p><p>&nbsp;</p><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">あとはこのゴルスタと組み合わせて</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root"><p>&nbsp;</p><div class="pickCreative_root" style="font-size:0"><article class="pickCreative_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="pickCreative pickLayout1" data-aid="njmLt78LS8jI6ENsO5nCQF" data-df-item-id="B0847R1H3Y" data-img-size="small" data-img-url="https://m.media-amazon.com/images/I/41fYpoQH-rL._SL500_.jpg" data-item-id="AZ000001" data-layout-type="1" href="https://d.odsyms15.com/click?aid=njmLt78LS8jI6ENsO5nCQF" id="njmLt78LS8jI6ENsO5nCQF" style="background-color:#fff;border-radius:4px;box-sizing:border-box;display:block;max-width:100%;padding:8px;text-decoration:none;width:450px;font-family:ヒラギノ角ゴ Pro W3, Hiragino Kaku Gothic Pro, ＭＳ Ｐゴシック, Helvetica, Arial, sans-serif;line-height:1;font-weight:normal;font-style:normal;word-break:break-all" target="_blank"><div class="pickLayout1_inner" style="display:-webkit-box; display: flex"><div class="pickLayout1_imgWrapper pickLayout1_imgWrapper--small" style="position:relative;margin-right:16px;flex-shrink:0;width:96px;height:96px"><img alt="" class="pickLayout1_img pickLayout1_img--small" data-img="affiliate" height="96" src="https://p.odsyms15.com/WuHerYovpTh8OtpearEj52" style="width:auto;height:auto;margin:auto; margin: auto;position:absolute;top:0;left:0;right:0;bottom:0;max-width:100%;max-height:100%" width="96"></div><div class="pickLayout1_info" style="display:-webkit-box; display: flex;-webkit-box-flex:1;flex:1 1 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center"><div class="pickLayout1_title pickLayout1_title--small" style="-webkit-box-orient:vertical;display:-webkit-box;font-weight:bold;-webkit-line-clamp:2;overflow:hidden;color:#333;text-align:left;font-size:14px;margin-bottom:16px;line-height:1.5;height:42px">【国内正規品】ON Gold Standard 100% ホエイ ダブルリッチチョコレート 907g(2lb) 「ボトルタイプ」</div><div class="pickLayout1_advertiser pickLayout1_advertiser--small" style="font-size:10px;color:#757575;margin-bottom:8px;text-align:left">Amazon（アマゾン）</div><div class="pickLayout1_price pickLayout1_price--small" style="color:#333;text-align:left;font-size:14px">4,880〜6,999円</div></div></div></a></article></div><p>&nbsp;</p></div><div class="ogpCard_root">こんな感じにもできる</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root"><a href="https://stat.ameba.jp/user_images/20211208/16/oekun/2a/dd/p/o0300025015043425222.png"><img alt="" height="250" src="https://stat.ameba.jp/user_images/20211208/16/oekun/2a/dd/p/o0300025015043425222.png" width="300"></a></div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">画像認識で座標さえわかれば、きわどい部分にもポチすることもできるぜ！ウェイ！</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root"><a href="https://stat.ameba.jp/user_images/20211208/16/oekun/86/9f/p/o0300025015043425850.png"><img alt="" height="250" src="https://stat.ameba.jp/user_images/20211208/16/oekun/86/9f/p/o0300025015043425850.png" width="300"></a></div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">これらをまとめたソースも載せとくぜ！</div><div class="ogpCard_root"><pre style="font-size:90%; background-color:#F6F6F6;padding:16px;">const Jimp = require('jimp');const fs = require('fs');const text2png = require('text2png');text2png('with custom fonts', {  font: 'M+ 1p',  localFontPath: './fonts/mplus-1p-heavy.ttf',  localFontName: 'M+ 1p'});fs.writeFileSync('text.png', text2png('oekunジム 渋谷ダッシュ1分', {    font: '80px "M+ 1p"',    color: 'white',    textAlign: 'center',    lineSpacing: 20    }));fs.writeFileSync('star.png', text2png('★', {    font: '24px "M+ 1p"',    color: 'white',    textAlign: 'center',    lineSpacing: 20    }));(async function(){  console.log('start');  // base image  const image = await new Jimp(300, 250, '#000000');  // 1枚め読んでリサイズ  const photo = await Jimp.read('oekun.jpg');  await photo.resize(300, Jimp.AUTO);  // baseに配置  await image.blit(photo, 0, 0);  //ぼかし  // image.blur(5);  // ポスタリゼーション  // image.posterize(3);   // テキスト画像も配置  const text = await Jimp.read('text.png');  await text.resize(280, Jimp.AUTO);  await image.blit(text, 10, 50);  // ゴルスタ配置  // const gold = await Jimp.read('golsta.png');  // await gold.resize(180, Jimp.AUTO);  // await image.blit(gold, 150, 90);  // ぽち配置  // const star = await Jimp.read('star.png');  // await image.blit(star, 125, 170);  image.writeAsync('out.png');  console.log('finish');})();</pre></div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">クリエイティブエンディンでは、これをAPIとして実装し、常にABテスト候補のバナー画像を生成している。</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">どのバナー画像が一番効果が良いかはマシンに任せるのが一番だ</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">oe的にはシンプルなoeのマッスルが引き立つ、このバナーがいいと思っているが</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root"><a href="https://stat.ameba.jp/user_images/20211208/17/oekun/bf/ca/p/o0300025015043432888.png"><img alt="" contenteditable="inherit" height="250" src="https://stat.ameba.jp/user_images/20211208/17/oekun/bf/ca/p/o0300025015043432888.png" width="300"></a></div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">結局効果がいいのはこれだったりするしな</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root"><a href="https://stat.ameba.jp/user_images/20211208/17/oekun/ec/37/p/o0300025015043433983.png"><img alt="" height="250" src="https://stat.ameba.jp/user_images/20211208/17/oekun/ec/37/p/o0300025015043433983.png" width="300"></a></div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">そんなわけで、クリエイティブエンディンのバナー生成部分を紹介したぜ。</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">想像で書いたので合ってるかはわからないが、多分大体こんな感じだろう</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><div class="ogpCard_root">&nbsp;</div><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12714583346.html</link>
<pubDate>Sat, 11 Dec 2021 00:01:58 +0900</pubDate>
</item>
<item>
<title>ストイック</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p>うーん、今日もいい日差しだ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20210716/15/oekun/df/c5/j/o0400060814972876912.jpg"><img alt="" contenteditable="inherit" height="334" src="https://stat.ameba.jp/user_images/20210716/15/oekun/df/c5/j/o0400060814972876912.jpg" width="220"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>こういう日は浜辺でウェイだな</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20210716/15/oekun/77/c4/j/o0500033414972877923.jpg"><img alt="" contenteditable="inherit" height="334" src="https://stat.ameba.jp/user_images/20210716/15/oekun/77/c4/j/o0500033414972877923.jpg" width="500"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>おっと、あまりに鍛えすぎて、</p><p>&nbsp;</p><p>adobeストイックって透かしが入っちまったぜ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>さて、oeはこのままビーチでヴァカンスなので</p><p>&nbsp;</p><p>&nbsp;</p><p>来週は更新できない</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20210716/16/oekun/a3/66/j/o1200117714972884711.jpg"><img alt="" height="412" src="https://stat.ameba.jp/user_images/20210716/16/oekun/a3/66/j/o1200117714972884711.jpg" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>じゃあな！</p><p>&nbsp;</p><p>（安心してくれ、ちゃんと履いてる）</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12686766700.html</link>
<pubDate>Fri, 16 Jul 2021 16:11:18 +0900</pubDate>
</item>
<item>
<title>木も欲している</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p>oeは今年の初めくらいから観葉植物を育てている。</p><p>&nbsp;</p><p>&nbsp;</p><p>こんなかわいいやつなんだ。</p><p>&nbsp;</p><p>&nbsp;</p><p>（やばい葉っぱではないぜ）</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20210715/17/oekun/98/a3/j/o0500050014972460403.jpg"><img alt="" height="420" src="https://stat.ameba.jp/user_images/20210715/17/oekun/98/a3/j/o0500050014972460403.jpg" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>水やりも毎日ではなくて楽なんだが、</p><p>&nbsp;</p><p>&nbsp;</p><p>ふと思ったことがある。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>「木もプロテインを欲してるに違いない」</p><p>&nbsp;</p><p>&nbsp;</p><p>ってな</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>そこで、いつもの水をプロテインにしてあげることにした。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>そしたら今ではoeと同じくこんなにビッグになったぜ、ウェイ！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20210715/17/oekun/23/9b/j/o0386050014972461660.jpg"><img alt="" height="500" src="https://stat.ameba.jp/user_images/20210715/17/oekun/23/9b/j/o0386050014972461660.jpg" width="386"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>テカリ具合もいい感じだろ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12686590129.html</link>
<pubDate>Thu, 15 Jul 2021 17:27:25 +0900</pubDate>
</item>
<item>
<title>チョコボールクワハラ</title>
<description>
<![CDATA[ <p>&nbsp;</p><p>&nbsp;</p><p>もう来週にはオリンピックだな</p><p>&nbsp;</p><p>&nbsp;</p><p>oeレベルになると、ほぼほぼオリンピック選手なので、組織委員会にも目をつけられていた。</p><p>&nbsp;</p><p>&nbsp;</p><p>「oekunさん、砲丸投げで出てくれませんか」</p><p>&nbsp;</p><p>&nbsp;</p><p>ってオファーもあったのだが、oeが出たら簡単に世界新がでて場がシラケてしまうだろうと思い丁重にお断りした。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>で、普通の選手と、oeでどれくらい違うかって話だが、</p><p>&nbsp;</p><p>&nbsp;</p><p>普通の選手はこんな感じだ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20210714/16/oekun/ed/f6/j/o1200063014971984730.jpg"><img alt="" contenteditable="inherit" height="221" src="https://stat.ameba.jp/user_images/20210714/16/oekun/ed/f6/j/o1200063014971984730.jpg" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>まぁよく見るやつだな！</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>これがoeレベルになるとボールがほぼチョコボールに見える。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickCreative_root" style="font-size:0"><article class="pickCreative_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="pickCreative pickLayout1" data-aid="Rydc4HqxtzIaSiLIiu0ky3" data-df-item-id="B01BSEN4PE" data-img-size="small" data-img-url="https://m.media-amazon.com/images/I/51XpnzQS8rL._SL500_.jpg" data-item-id="AZ000001" data-layout-type="1" href="https://d.odsyms15.com/click?aid=Rydc4HqxtzIaSiLIiu0ky3" id="Rydc4HqxtzIaSiLIiu0ky3" style="background-color:#fff;border-radius:4px;box-sizing:border-box;display:block;max-width:100%;padding:8px;text-decoration:none;width:450px;font-family:ヒラギノ角ゴ Pro W3, Hiragino Kaku Gothic Pro, ＭＳ Ｐゴシック, Helvetica, Arial, sans-serif;line-height:1;font-weight:normal;font-style:normal;word-break:break-all" target="_blank"><div class="pickLayout1_inner" style="display:-webkit-box; display: flex"><div class="pickLayout1_imgWrapper pickLayout1_imgWrapper--small" style="position:relative;margin-right:16px;flex-shrink:0;width:96px;height:96px"><img alt="" class="pickLayout1_img pickLayout1_img--small" data-img="affiliate" height="96" src="https://p.odsyms15.com/29c5Eq4ol48QWHT711KHD5" style="width:auto;height:auto;margin:auto; margin: auto;position:absolute;top:0;left:0;right:0;bottom:0;max-width:100%;max-height:100%" width="96"></div><div class="pickLayout1_info" style="display:-webkit-box; display: flex;-webkit-box-flex:1;flex:1 1 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center"><div class="pickLayout1_title pickLayout1_title--small" style="-webkit-box-orient:vertical;display:-webkit-box;font-weight:bold;-webkit-line-clamp:2;overflow:hidden;color:#333;text-align:left;font-size:14px;margin-bottom:16px;line-height:1.5;height:42px">森永製菓 チョコボール&lt;ピーナッツ&gt; 28g×20箱</div><div class="pickLayout1_advertiser pickLayout1_advertiser--small" style="font-size:10px;color:#757575;margin-bottom:8px;text-align:left">Amazon（アマゾン）</div><div class="pickLayout1_price pickLayout1_price--small" style="color:#333;text-align:left;font-size:14px">1,280〜2,100円</div></div></div></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>何を言ってるかわからないと思うが、</p><p>&nbsp;</p><p>&nbsp;</p><p>oeが構えると、砲丸が小さくて軽そうに見えてしまうんだよな。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>昔ちょっとやったラグビーも、あまりのoeの筋肉のデカさに、</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20210714/16/oekun/40/3b/j/o1024073814971986581.jpg"><img alt="" height="303" src="https://stat.ameba.jp/user_images/20210714/16/oekun/40/3b/j/o1024073814971986581.jpg" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>相手チームから、</p><p>&nbsp;</p><p>&nbsp;</p><p>「oeがアーモンドチョコを投げてると思ったらボールだった」</p><p>&nbsp;</p><p>&nbsp;</p><p>って、言われたくらいだぜ</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="pickCreative_root" style="font-size:0"><article class="pickCreative_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="pickCreative pickLayout1" data-aid="rItjLgJiJbCRiC9PfXiTT4" data-df-item-id="B014NEL42G" data-img-size="small" data-img-url="https://m.media-amazon.com/images/I/51KS+KxU9jL._SL500_.jpg" data-item-id="AZ000001" data-layout-type="1" href="https://d.odsyms15.com/click?aid=rItjLgJiJbCRiC9PfXiTT4" id="rItjLgJiJbCRiC9PfXiTT4" style="background-color:#fff;border-radius:4px;box-sizing:border-box;display:block;max-width:100%;padding:8px;text-decoration:none;width:450px;font-family:ヒラギノ角ゴ Pro W3, Hiragino Kaku Gothic Pro, ＭＳ Ｐゴシック, Helvetica, Arial, sans-serif;line-height:1;font-weight:normal;font-style:normal;word-break:break-all" target="_blank"><div class="pickLayout1_inner" style="display:-webkit-box; display: flex"><div class="pickLayout1_imgWrapper pickLayout1_imgWrapper--small" style="position:relative;margin-right:16px;flex-shrink:0;width:96px;height:96px"><img alt="" class="pickLayout1_img pickLayout1_img--small" data-img="affiliate" height="96" src="https://p.odsyms15.com/tASDww7OoLoBcwDFIyqda4" style="width:auto;height:auto;margin:auto; margin: auto;position:absolute;top:0;left:0;right:0;bottom:0;max-width:100%;max-height:100%" width="96"></div><div class="pickLayout1_info" style="display:-webkit-box; display: flex;-webkit-box-flex:1;flex:1 1 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center"><div class="pickLayout1_title pickLayout1_title--small" style="-webkit-box-orient:vertical;display:-webkit-box;font-weight:bold;-webkit-line-clamp:2;overflow:hidden;color:#333;text-align:left;font-size:14px;margin-bottom:16px;line-height:1.5;height:42px">明治 アーモンドチョコ大箱 173g</div><div class="pickLayout1_advertiser pickLayout1_advertiser--small" style="font-size:10px;color:#757575;margin-bottom:8px;text-align:left">Amazon（アマゾン）</div><div class="pickLayout1_price pickLayout1_price--small" style="color:#333;text-align:left;font-size:14px">648〜1,580円</div></div></div></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>なんてな、oeジョークだ。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/oekun/entry-12686393675.html</link>
<pubDate>Wed, 14 Jul 2021 16:42:03 +0900</pubDate>
</item>
</channel>
</rss>
