/* */

GithubのREADMEでよく見るBadgeの設定の仕方について

こんにちわ&こんばんわ、わかめです。

regonn-curry-fmを視聴されてる方はご存知かもしれないですがregonnさんが現在開発中のOSSpolar_bearに絶賛OSS活動中です。

github.com

今回はそのOSS活動中に初めて知りましたGithubのREADMEへのBadgeの設定方法についてまとめます。またpolar_bearPythonのライブラリということで主にPythonに関連のあるBadgeの設定方法についてのみ言及したいと思います。

PyPI

PyPIでの公開が完了している場合、パッケージ名を入力するだけで下記のようなBadgeを作成してくれるようです。

PyPI version

また生成されたMarkdownに記述されるBadgeへのURLがPyPIへリダイレクトしてくれるようです、試しに上のBadgeをクリックしてみて下さい。

[![PyPI version](https://badge.fury.io/py/polar-bear.svg)](https://badge.fury.io/py/polar-bear)

badge.fury.io

PythonVersion

こちらもPyPIでの公開が完了していれば、パッケージ名を入力するだけでライブラリが対応するPythonのVersionをPyPIから取得してBadgeを作成してくれるようです。

Python Versions

[![Python Versions](https://img.shields.io/pypi/pyversions/polar_bear.svg)](https://pypi.org/project/polar-bear/)

shields.io

参考

みてねのMeetup #4に参加してきました!

はじめに

去年の10月頃に転職を果たし、勤務先が渋谷になったので今まで参加できなかった勉強会に積極的に参加しようという気持ちで今回も参加してきました。

mixi.connpass.com

実は「みてね」というサービス自体、独身で接点がないためこのMeetupで初めて知ったという経緯があります。 じゃあなぜ参加したかというと、SageMaker を用いた高速な顔検出 という発表がお仕事の内容にも近い分野でとても勉強になりそうだと思ったからなのです。

mitene.us

サービス紹介

概要

みてねの概要となぜこのサービスを始めたのかを語って頂きました。元々子どもが生まれたことがきっかけ、子どもが生まれると「え!?こんなに写真・動画撮影するの!」ってくらい撮影する。そしてその撮影した大量の写真・動画をどこに保存して、どうやって家族間で共有するか、簡単に保存できて共有できる専用のサービスは現状・・・ない、じゃあ作ろうとなった。現在日本だけでなく海外にも展開中、北米・英語圏も順調なユーザの増加、世界共通で子どもの成長を見守りたいというニーズがある。

感想

みてねのサービス愛が伝わってくる発表でした、みてねに対する愛情や熱い想いを持ったメンバーが集っているのだなと感じました。 スライドにも記載されていた「その子の人生もまるごとを残せる」というキーワードが特に心打たれました。

1秒動画のつくりかた・概要編

発表資料

speakerdeck.com

概要

「みてね」には現在基本機能の写真・動画の共有以外に以下のような機能があるようで、今回はその中から1秒動画のつくりかたについて要素毎に発表者に語って頂くという内容でした。また当日の発表全体の流れを説明して頂きました。

  • 毎月撮影した写真をフォトブックにまとめる
  • 撮影した写真・動画をまとめたダイジェスト動画(1秒動画)
  • 撮影した動画をDVD1枚分の内容になるように選んで提案する

スライド(14枚目参照)そのままですが以下の流れで動画を生成しているようです。

  1. メディア解析
  2. 生成対象の家族抽出
  3. 素材選択
  4. 動画ファイルの生成・配信

感想

さらっとスライドに掲載されていた、BGM検出、メディアの採点方法、顔・人物検出と気になるワードがたくさんありました。BGM検出については絶対聞いておきたいと思っていたのですが、最後ににも書きましたが当日体調不良で聞く前に帰宅してしまいました。また機会があったら聞いてみたいですね。

SageMaker を用いた高速な顔検出

発表資料

speakerdeck.com

概要

1秒動画のつくりかた・概要編で紹介された「メディア解析」部分の発表でした。アップロードされた写真・動画に家族の顔が写っていないものは1秒動画の素材から除外したい、またちゃんと顔が写っているかを検出したい。満たしたい要件は以下の通り。

  • 画像1枚であれば0.1秒で検出したい(検出スピード)
  • 大量(月間7000万件)のアップロードを捌けるようなインフラ構築
  • ピークと暇な時との差が激しいのでスケーリングができるようにしたい

顔検出器はS3FD: Single Shot Scale-invariant Face Detectorを利用。 選択理由は以下の通り。

  • TensorRT対応
  • Pretrainedモデルがある
  • 精度(WIDER FACE Hard Ap 0.858)

Caffe実装で1枚検出するのに0.8秒かかるため10倍の高速化が必要。

  • TensorRT利用
  • DALIを使用
  • 並列化、非同期化

最終的に1枚あたり0.04秒まで高速化ができた。

感想・疑問

顔検出器の予測スピードの改善・インフラ構築、お一人でやられているという発表だったのでただただすごいなと。

以下疑問点です。

  • GPUを惜しまずに使っている印象を受けました、フォトブック・DVD作成以外の課金要素で採算とれているんだろうかという疑問が残りました。
  • 顔認識の精度自体の改善の話はなかったので運用でカバーしてるのだろうか。
  • 適合率が低いと顔認識の結果としては致命的かなと思ったが、そもそも家族の写真・動画で顔が写っていないものをアップロードしないのでは?と思った。

全体を通して気づいたこと

こういうMeetupが開催される際はTwitterハッシュタグが設定され普段は参加者が会場の様子や発表内容についてつぶやくのですが、 今回のMeetupではハッシュタグ#mitene_meetup@_atsushisakaiさんが発表者の豆知識をつぶやいて頂いたので、感情移入しやすくて、発表も聞きやすくなったなと思いました。

また、僕のちょっとした疑問ツイートにも反応して頂けたのはとても嬉しかったです。

最後に

懇親会で頭に浮かんだ疑問を発表者の方々に聞こうと質問を用意しておいたのですが、当日急に体調が悪くなってきたので懇親会参加できずに帰宅してしまいました。 また機会があれば聞いてみたいです!忘れないためにも下のほうに書き出しておきます。

あとで見た懇親会でのお寿司とピザの写真。美味しそう・・・

AtCoder Beginner Contest 118 へ参加しました

こんにちわこんばんわ、わかめです。

Kaggleに影響され、最近AtCorderに参加するようになりました、今回で2回目ですね。

atcoder.jp

とりあえずAとBはすぐ解けるようになりましたがCが未だに解けない状態が続いています。とりあえず当時書いたコードやログを残しておきます。

A - B +/- A

問題の通りに実装しました。

A, B = map(int,input().split())
 
if B % A == 0:
  print(A + B)
else:
  print(B - A)

B - Foods Loved by Everyone

積集合をとって残ったものを数えたほうが早いと思いました。

n, m = map(int, input().split())
data = [list(map(int, input().split())) for _ in range(n)]
s = None
for d in data:
    if s is None:
        s = set(d[1:])
    else:
        s = s & set(d[1:])
print(len(s))

SIGNATE 国立公園の観光宿泊者数予測 コンペで24位でした

だいぶ報告が遅くなりましたが去年の10月24日から12月13日まで経産省開催されていました「国立公園の観光宿泊者数予測」、略して公園コンペに参加し結果24位でした。

signate.jp

今更このコンペの終了報告を書くことに至ったのはSIGNATEにもメダル要素が導入されたからです。詳しくは次のリンクを参照してください。

signate.jp

24位にも関わらず銀メダルを取得したわけですが、参加者124人中の20%が銀メダル圏内なわけでだいぶギリギリのラインだったようですね。

解法についてはupuraさん作成のTogetterにまとめられていますのでそちらをご覧下さい。

togetter.com

一応総括しておきますとちゃんとクロスバリデーションしろということですね。あとLBは参考程度に留めておけもですね。

他の参加者の方々のブログリンク

copypaste-ds.hatenablog.com

upura.hatenablog.com

ktrw.hatenablog.com

www.hellodatascience.work

www.asanohatake.com

Googleポッドキャストを使ってregonn&curry.fmを購読してみる

皆様こんにちわこんばんわ、わかめです。

最近こちらのPodcastの配信を楽しみにしています。 regonn-curry-fm.github.io

端末をiPhoneからAndroidに変更したので「Podcast聞けなくなったちゃったなぁ」と思っていたのですが(Webページ上で聞こうとすれば聞けるのであまり困らないといえば困らないです) www.currypurin.com

どうやらこちらのGoogleポッドキャストアプリで聞けるようなのでダウンロードしてみました。 play.google.com

Googleポッドキャスト使用感

こんな感じ。

配信内容の概要が表示されました。

UIもシンプルでいい感じです!

倍速が最大3倍まで設定できるようです。

これでAndroidでもPodcastを聞けるようになりました、ありがたいことです。

ネット生活で便利なプラグイン・ツールを紹介してみる

随時更新中

タイトルの通り普段使っているプラグイン・ツール等を紹介してみます。

SNS

tweetdeck

tweetdeck.twitter.com

Twitterのタイムラインを複数開きたいと思ったことはありませんか。 検索キーワード毎やリストなどをそれぞれ1タイムラインとして扱うことができます。またそれらを横に並べて表示することができてとても便利です。

Chromeプラグイン

OneTab

chrome.google.com

Chromeのタブが無限に増え続ける人にオススメです。 無限に存在するタブを1つのタブに集約し、1タブを1リンクとしてまとめてくれます。

f:id:wakame1367:20190207230145p:plain
私のOneTabの状態

2月4日を1月35日という表現に変換するスクリプトを作ってみる

一発ネタです。関数名は僕の夏休みの8月32日バグからお借りしました。 gist.github.com

終わり!

github.com

TypeError: read_feather() got an unexpected keyword argument 'nthreads'への対処

Twitterで流れてきたこちらの問題についてちょっと調べてみました。

TL;DR

調査まとめ

以下上の問題を受けて調べたことをまとめました。

現象の再現

ツイートの件、再現するかを確認しました、確かに再現しました。

gist.github.com

原因調査

サクッと調べたらこんなissueを見つけました。 github.com

issueでのやりとりをまとめると、tl;drに書いた内容と重複しますが、pyarrow - read_featherがアップデートで削除されたデフォルト引数(nthreads)をpandas - read_feather側で残したままにしたのが原因。pandasの次のアップデートで修正予定。

原因調査 - 詳細

もう少し具体的に言うと、pyarrowのversionが0.10.0から0.11.0へ上がる際に以下のような変更が発生している。

def read_feather(source, columns=None, nthreads=None, use_threads=False):
def read_feather(source, columns=None, use_threads=True):

そして、問題のpandasのread_featherですが

pandas(0.23.4) - read_feather

featherのread_dataframeをそのまま返していることがわかります。

じゃあfeatherのread_dataframeはどうなっているかというと

feather read_dataframe

こちらはpyarrowのread_featherを返しています。

pyarrow read_feather

まとめるとこんな感じの依存関係になっています。

f:id:wakame1367:20190119181330p:plain:w300

というわけでpyarrowの変更がpandasにまで波及したことで、tl;drに書いた状況になってしまったということです。 また、この調査結果からfeatherを読み込むのにわざわざpandasのread_featherを使う必要はなく、pyarrowのread_featherを使えばよい。

追加調査

上の内容を受けてpypi - pandas(0.24.0rc1)がプレリリース版として上がっていたので修正されているか調べてみました。結果読み込めることが確認できました、次のバージョンが待ち遠しいですね。 gist.github.com

また、pandas 0.24.0rc1のwhatsnewから今回の変更点を列挙してみました。

  • Additionally we no longer depend on feather-format for feather based storage and replaced it with references to pyarrow (GH21639 and GH23053).

どうやら依存関係を下記画像の①から②へ修正した模様。

f:id:wakame1367:20190119173308p:plain:w300
pyarrowの依存関係

  • Deprecated the nthreads keyword of pandas.read_feather() in favor of use_threads to reflect the changes in pyarrow>=0.11.0. (GH23053)

pandas.pydata.org

おまけ

ところでpandasのwhatsnewに面白い一文があったので紹介します。

Warning The 0.24.x series of releases will be the last to support Python 2. Future feature releases will support Python 3 only. See Plan for dropping Python 2.7 for more.

pandasのバージョンアップ履歴を見ると今年中か来年には0.25にアップデートされそうなので、pandasのPython 2へのサポートは今年中、もしくは来年あたりに切られそうですね。 Python 2よ、さらば・・・。

pandas.pydata.org

以上です、ありがとうございました。

参考

世界各国の祝日特徴量を作る

upuraさんの記事でツイートを取り上げてもらいましたが日本の祝日の特徴量を作る場合、下記ライブラリを使うと便利です。

pypi.org

こちらの記事で使い方等簡単に説明されています。 upura.hatenablog.com

では日本以外の祝日の特徴量作るのはどうすれば?ということでこのようなライブラリがあることを知りましたので紹介いたします。

github.com

サンプルデータはupuraさんの記事から使わせていただきました。

gist.github.com

2018年を振り返る

皆様こんにちわ、こんばんわ、わかめです。 今年起きたイベント、主に仕事関係を箇条書きで書き出して振り返ってみます。

  • 2018年4月頃
    • 深層学習の研究開発にアサイ
    • 深層学習さっぱりわからんのでCourseraで勉強する
    • 技術書典4へ行ってみる
  • 2018年5月頃
    • Kaggleをやり始める
  • 2018年8月頃
    • 初めての転職活動を始める
  • 2018年10月頃
    • 派遣会社から転職
    • ゲーム開発・Vtuberとかやってる会社に転職する←???
  • 2018年11月頃
    • Signateに挑戦する→残念ながら結果出せず
    • 勤務先渋谷なので勉強会に顔を出し始める

去年の振り返りをやっていないので比較できないのですが、個人的に去年よりいろいろアウトプットできたなぁと思う2018年でした。ただブログさぼりがちだったので来年は1ヶ月に5記事くらいは書いていきたいなぁと思います。また、今年目標にしていた統計検定2級の合格をさっぱり忘れてたので来年こそは取得を目指そうと、あとKaggleのメダル1枚は確実にとりたいですね。

Twitter / Google / はてなブックマーク検索メモ

概要

昨日投稿したブログ記事、2018年過去記事の振り返りで使いました検索Tipsをメモがてらまとめておきたいと思います。 wakame1367.hatenablog.com サービス毎の検索欄に日付範囲でフィルターをかけることで当時話題になった記事を探すのに利用しました。

Twitter

Twitterでは検索欄部分に、キーワード名+日付範囲指定、例えば「kaggle since:2018-6-24 until:2018-6-30」で2018年6月24日から2018年6月30日までのツイートをフィルターにかけられます。

f:id:wakame1367:20181231134502p:plain

Google

Google検索では「ツール→期間指定なし」を続けてクリックすると次の画面が表示されるので、日付範囲を指定しました。 f:id:wakame1367:20181231140843p:plain

はてなブックマーク

はてなブックマークでは検索UIに期間指定する部分があるのでそちらで日付範囲を設定しました。 こちらページのURLを見る限り「date_begin=2018-06-24&date_end=2018-06-30」で日付範囲指定できるようですね。 f:id:wakame1367:20181231140133p:plain

参考

twitter.com

mag.app-liv.jp

Googleトレンド(Kaggle)を見て1年を振り返ってみる

こんにちわこんばんわ、わかめです。こちらの記事は今年1年であった日本でのKaggle関連のニュースをGoogleトレンドともに振り返ってみようというものです。

振り返ってみようと思った動機として、Kaggle-ja-slackの規模が今年になって急に大きくなったなぁという印象があったからですね。upuraさんのスライドから引用するとだいたい500member / 月の伸びなんですが・・・すごいなぁと。

upura.hatenablog.com

ちなみに最新のKaggle-ja-slackの参加人数はこちらになります。まだまだ今後も増えていきそうですね!

またKaggle-ja-slackに興味ある方はこちらから参加できますのでぜひ参加してみてください。(宣伝)

というわけで本題に入ります。下のグラフはGoogleトレンド、検索キーワードを「kaggle」に設定、日本限定で検索トレンドを可視化したものですね。 こちらを独断と偏見でピークポイント(赤丸で囲った部分です)を決めまして、その付近のKaggle関連のニュースを振り返ってみたいと思います。

f:id:wakame1367:20181230164623p:plain
独断と偏見で決めたKaggleトレンドのピークポイント

ピークポイント8個それぞれの期間はこんな感じになります。

だいたい1ニュース / 月があったようですね。(7月8月話題がないのは皆さん夏休みだったからですかね)それでは期間ごとに振り返ってみましょう。

2018年3月4日 - 2018年3月10日

ヤフー、エンジニア募集要項必要スキルにKaggleというワードが!

こちらの記事の一般の人からすると「新卒でも年収650万狙える!?」というのが第一印象だったのではないかと思いますが

Kagglerからすると印象に残ったのは

(4)Webサイト「Kaggle」のコンテスト(単独参加)でトップ10%に入賞

という点だったと思います。 www.itmedia.co.jp

上のニュース記事を受けてこちらのツイート(上の記事リンク出してからのY社はまったく隠れてませんね・・・w)

残念ながら未だに私はシルバーメダル取れてませんorz

2018年4月1日 - 2018年4月7日

DeNA、業務時間にKaggle参加を推奨する制度を導入

4月に入ってすぐですね、すごいニュースが入ってきましたね。エンジニア界隈がざわついた瞬間でもあると思います。 dena.com

このニュースを見て一番驚いたのはこういう前置きは書きつつも

業務Kaggle割合は、社内業務アサインの工数目安を規定するものである。アサインされた業務においてはランクにふさわしい高い成果を出し、データサイエンスチームとしての信頼を保たなければならない。 Rank SS(Kaggle100%)の場合、主担当してアサインされる社内案件業務はないが、会社を代表するデータサイエンティストとして、社内の分析相談に真摯に応えることは求められる。

RankSSであればKaggle業務100%に業務時間を使えるということだったと思います。

2018年4月15日 - 2018年4月22日

技術書典4にてKaggleチュートリアル本がバズる

私も行ったはずなのにあまり記憶が・・・ 4月22日は技術書典4の開催日でしたね。

techbookfest.org

そしてそちらで販売されたkaggleチュートリアルブックがバズっていたという記憶が印象に残っています。

note.mu

著者のcurrypurinさんは執筆後怒涛の勢いでKaggleのメダルを取得しており、後少しでKaggleMasterという手前に迫っております。

www.currypurin.com

2018年5月6日 - 2018年5月12日

Kaggleは役に立たない?

Kaggleは役に立たないというタイトルに反して、内容はKaggleと実務との関係性を分析している記事です。 ただ記事で指摘されている通り

脳みそを空っぽにしていろんなモデルや特徴量を作ってアンサンブル たくさんランを流してxgboostのscoreの流れをぼーっと眺める 画像コンペでのトレーニングデータへのラベリング とか、何やってんだろと思うこともあるのは確か。

自分でもスコアを上げるためによくわからないことをやっているなと自覚することはあります。 特にDataLeakageに関してはパズルと揶揄されることもあったり・・・。

月刊: Kaggleは役に立たない | threecourse's memo

2018年6月24日 - 2018年6月30日

機械学習を初めたいなら何をやれば→Kaggleで手を動かしてみる!

geek-out.jp

また仁科さんは、オンラインでのデータ分析コンテストサイト「Kaggle」を勧める。「簡単な問題から難しい問題までそろっていて、チュートリアルが用意されているものもあるので、機械学習の基礎を手元で簡単に学ぶことができる。入門としてお薦め」と話す。

これに関しては私も同意です。Kaggleは基本初心者を歓迎しています。例えばKaggleLearnというデータサイエンスを学ぶためのコースを用意していたり、またカーネルという仕組みは手元にインターネットに繋がるマシンさえあれば、PythonやRのコードを動かすことができるバーチャルマシンを無料で動かすできるというものです。

2018年9月9日 - 2018年9月15日

Home Credit Default Riskにおいて日本勢多数入賞!

入賞報告多くて全部取りあげるのが難しいくらい入賞されている方が多かったです。

なんでこんなに入賞する人が多くなるのかについて少しKaggle入賞のシステムを簡単に説明しますと、基本上位3位までが賞金授与対象なのですが、参加人数に応じて割合でGold/Silver/Bronzeメダルをゲットできる枠があります条件については下記リンク記事が詳しいです。

www.currypurin.com

今回で言うと7198チームが参加していたのでGoldがトップから24チーム、Silverが次いで335チーム、Bronzeが次いで360チーム、入賞対象が全部で719チームになったコンペでした。ちなみに1チームのメンバー人数制限はなかったので何人でもメンバー集めてチームを組めました。パッと見たところ20人のチームが最大ですかね。そんなこんなで入賞報告が多かったわけです。 (余談ですがこんなことがあったので1チームのメンバー人数制限ができたんですかね。)

入賞報告ブログ紹介

note.mu

www.acroquest.co.jp

toshikishimizu.hatenablog.com

amalog.hateblo.jp

Google AI Open Images - Object Detection TrackにおいてPFNが準優勝

Kaggleの話題になるとP社とD社が名前に挙がる説

下記事はログインしないと記事内容を読めないので何があったか説明しますと www.nikkan.co.jp

こちらのKaggleコンペの内容は1枚の画像から複数の物体を認識するタスクですね。

https://storage.googleapis.com/openimages/web/images/c159532248cb84da.png

上の画像を見る限りすげー難しそうなタスクだということはなんとなくわかると思います。

そしてこちらのコンペで準優勝したということですね、すごい!

f:id:wakame1367:20181230153529p:plain

一時期優勝したメンバーのアイコンのSlackカスタム絵文字がKaggle-ja-slackで流行ったのが面白かったです。

Kaggle - google-ai-open-images-object-detection-track - leaderboard

上の内容を書き終わった後にこちらの記事を見つけました、コンペ内容と結果について端的にまとまっているのでこっち読んだほうが要旨はすぐ把握できそうですね・・・。 www.preferred-networks.jp

2018年10月21日 - 2018年10月27日

MANABIYA#2の1枠にてKaggleが取りあげられる

こちらのイベントも私は不参加でしたが、当時ライブ放送されていたのでそれを見ながらTwitterで実況してました。 manabiya2.peatix.com

10/21 (日) - Day 3 6限目 (16:30 - 17:10):【3-6】Special Session:キスモ「Kaggleで変える日本の機械学習活用」

発表の内容はKaggleの紹介とKaggleが実務へどう役立つかについての発表でした。コンペに参加する手前様々な手法を試す機会がある点がカードゲームで言う手札を増やせるよというお話でした。

MANABIYA#2に大越が登壇し、Kagglerとして発表しました | 株式会社キスモ

2018年12月2日 - 2018年12月8日

KaggleMeetup#5開催!

ちょっと時期はずれますが12月1日にKaggle Tokyo Meetup #5がありました、私は参加登録したタイミングが遅くて残念ながら参加できませんでした。#kaggle_tokyoのハッシュタッグを当時見てましたが行けなかったのはだいぶ痛手だったなぁと・・・、次回はぜひ参加したいですね。 connpass.com

Kaggle Grandmaster/Master or 金メダル保持枠とKaggle Expert or 銀メダル保持枠が前回と比べてそれぞれ約3倍、約2倍増えてるのはすごいですよね。

f:id:wakame1367:20181230130107p:plain
Kaggle_Meetup#4参加人数
f:id:wakame1367:20181230130136p:plain
Kaggle_Meetup#5参加人数

Kaggleアドベントカレンダーが始まる

全体的にKaggle実践的なTipsや解法の共有があったのでとても勉強になりました。 qiita.com

上のアドベントカレンダーが埋まったのでしれっとその2が作られていたのが面白かったです。 qiita.com

この記事を書いてて思ったのはこの記事をアドベントカレンダーに登録しておけば良かったのではと。

Signateプチ炎上

Signateは日本版Kaggleみたいなところがありますし関係性は少しながらあると思いますので取りあげました。 Signate登録時の個人情報を異様に要求してくるってところですね、当時学歴(大学)入力がオプションではなく必須だったのがびっくりしました。 blog.shikoan.com

あと自分の何気ないツイートが炎上を加速させた気がします。

今は掲載されてないようですが、個人的に面白かったのはこの画像ですね。 f:id:wakame1367:20181230132007p:plain

最後に、Kaggleという結構ニッチな界隈だったつもりがいつのまにかニュース記事に取りあげられたり、雑誌の1コラムに取り上げられたりとネタに事欠かない凄まじい1年だったなぁという感想です。

Courseraの講座を初めて受講する人に向けて

こんばんわ、わかめです。

はてなブックマークを覗いていたらこんな記事が。 getnews.jp

まさかCourseraの講座、受講報告が記事になりバズるとは思ってもいませんでした。
やはりバズる人はバズるということでしょうか。

そこで今回の主旨は、この記事を見て「Courseraの講座を受講してみたい!」という初心者向けに役立つ情報を紹介してみます。

ちなみに私もCourseraの講座受講者であり、
機械学習や深層学習のコースを受講し資格を取得していたりします。

wakame1367.hatenablog.com

資格(Certification) について

Courseraの資格(Certification) とは

Courseraで取得する資格は講座を受講したことを証明するもの。
専門的なスキルを証明するものではないということに注意してください。

A Course Certificate is proof that you completed and passed the course.

learner.coursera.help

この資格はCourseraいわく、履歴書や職務経歴書、LinkedInのスキル欄に記述することができる。
LinkedInのスキル欄はこんな感じで記述できます。

f:id:wakame1367:20180922182912p:plain:w500

取得方法

各コースで設定されている課題の合格条件を満たせば、資格(Certification)をもらえる。

Pass all required assignments in the course, or meet the course passing threshold for a cumulative graded course

フリートライアル

f:id:wakame1367:20180922180342p:plain:w500

  • 無料で全てのコンテンツにアクセス可能
  • ただしCertificationを取得するには課金が必要、例外あり(Free certificate courses 名前の通りCertification発行に課金は必要ない講座)
  • フリートライアルで受講する場合もクレジットカードを登録する必要がある
    • クレジットカードの登録については後述

      課金について

Neural Style Transfer Tutorialを試してみた!

Kerasの製作者、François Chollet氏のツイートを
見てたらこんなツイートが

medium.com

どうやらNeural Style TransferのチュートリアルがGoogleColabで動かせるよという話みたいだ。
簡単に試せるならということで、とりあえず自分のTwitterアイコンをNeural Style Transferしてみた!

まずは葛飾北斎神奈川沖浪裏スタイル画像に使ってみた例

←から入力画像、スタイル画像、スタイル変換後の画像 f:id:wakame1367:20180821203009p:plain

次はフィンセント・ファン・ゴッホ星月夜スタイル画像に使ってみた例 f:id:wakame1367:20180821203056p:plain

その次はこの画像スタイル画像に使ってみた例 f:id:wakame1367:20180821203108p:plain

最後はこの画像スタイル画像に使ってみた例 f:id:wakame1367:20180821203336p:plain

Kerasのplot_modelでコケたときに見る記事

TL;DR

  • pydot の開発が再開?され
  • 最新版のpydotはPython3.5と3.6に対応したので
  • pydot 1.2.4を入れよう

github.com

記事の元ネタ

teratail.com

なぜこの記事を書いたのか

例えば「Keras plot_model error」などのキーワードでググると出てくるこの記事。

qiita.com

pydotは現在開発が止まっており、python3.5および3.6では動きません。 これらのバージョンのpythonを用いている環境では、 pydotplusまたはpydot-ngを代わりに使用することで対処できます。 私はpydotplusを使いました。

引用文より、繰り返しになりますがpydotは現在開発が止まっており、python3.5および3.6では動きません。という問題に対し
解決策としてpydotではなくpydotplusまたはpydot-ngを利用するとあります。
しかし最新版のKeras、具体的には2.1.6以降でこの解決策を適用しようとすると余計にハマります。
なぜかというと、Keras 2.1.6以降ではpydotのみImportしようとするからです。

# `pydot` is an optional dependency,
# see `extras_require` in `setup.py`.
try:
    import pydot
except ImportError:
    pydot = None

keras/vis_utils.py at 2.2.0 · keras-team/keras · GitHub

それに対し前のバージョン、具体的には2.0.5から2.1.5の間ではpydotとpydotplust、pydot-ngそれぞれImportしようとします。

try:
    # pydot-ng is a fork of pydot that is better maintained.
    import pydot_ng as pydot
except ImportError:
    # pydotplus is an improved version of pydot
    try:
        import pydotplus as pydot
    except ImportError:
        # Fall back on pydot if necessary.
        try:
            import pydot
        except ImportError:
            pydot = None

keras/vis_utils.py at 2.1.5 · keras-team/keras · GitHub

したがって、pydotの代わりにpydotplus、pydot-ngを利用しようとすると余計にハマるわけです。