tmori’s blog

公開メモ帳くらいの感覚で書いています。技術系多め。日常少なめ。

【実験】人間でGANの画像生成を(できる限り)再現してみた。【ネタ】

本記事はFUN Advent Calendar 201920日目の記事です。
昨日はやまけんの 【AOSP】ビルドしたAndroidOSを実機に入れる - Qiita でした。

注意事項

  • ネタ記事
  • タイトルにある通りできる限りです

以上を踏まえた上で読んでください!

続きを読む

情報系大学生がG検定に合格した話(+本音)

はじめに

JDLA Deep Learning for GENERAL 2019#3 (通称: G検定)に合格した話を書きたいと思います。

Who am I

情報系の大学に通う大学4年生です。機械学習は2年前から、深層学習は1年前くらいから勉強しています。研究ではCNN使用した実問題解決を主にやっています。

試験対策

書籍

ある程度の知識があったので問題演習ができる徹底攻略ディープラーニングG検定ジェネラリスト問題集でひたすら解きました。実際の試験の時に全く同じ問題が数個出題されていました!オススメの書籍です。

アウトプットよりインプットを優先する人は深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキストを一周するといいかも知れません。

web

選択式の試験において問題を多く解くことが合格への一番の近道だと思っています。基本情報技術者試験でいうところの過去問道場的なサイトがG検定にはないかと探したところ下のサイトを発見しました。 quizlet.com

quizletというフラッシュカード形式で暗記できるサイトです。このサイトはスマホアプリにもなっているので寝る前に少し復習するときなどにとても便利です。たまに誤字や誤答があるので注意が必要です。

試験の感想

2019年#3では前半に時事問題や法規制が多く出題されていました。そのせいで前半に時間を使いすぎてしまい時間切れになってしまう人が多かったようです。時間がかかりそうな問題はチェックをつけて後に回す癖をつけておきましょう。時事問題や法規制の対策についてAI白書を読んで勉強した方がいいと言っている人もいますが、対策しなくても合格はできると思います。理由として時事問題は取り上げられる範囲が広すぎて時間がかかりすぎてしまい勉強効率がかなり悪いように感じます。なので僕のおすすめは法規制周りは試験中にググれるくらいの時間を作るために深層学習の基礎であったり、人名を覚えたほうが点数は取れそうな気がします。(もちろん、勉強時間が確保できる人は時事問題や法規制を勉強するほうがいいです。)

AI白書 2019

AI白書 2019

  • 作者:
  • 出版社/メーカー: KADOKAWA
  • 発売日: 2018/12/11
  • メディア: 大型本

本音

エンジニアにとっては、深層学習を理解しているという証明にG検定合格は使えそうにありません。そもそもエンジニアはE資格を推奨されていますのであまりG検定にはこだわらないほうがいいのかも知れません。しかし、事業活用する人(ジェネラリスト)にとってはとても有用性のある資格だと思います。

まとめ

  • 黒本最強
  • 寝ながらquizlet
  • 時事問題と法規制は後回し

フォルダを監視して新規作成されたファイルの中身をslackに通知した話

はじめに

現在、大学で深層学習を使った研究を行っています。
学習が終わるまでlsを叩く日々にうんざりしたので、学習が終わったらslackに出力結果を通知してくれるシステムを構築しました。

f:id:tmoribanner:20191106160433p:plain
全体の完成図

環境

  • CentOS 7
  • incron
  • Slack Incoming Webhooks

手順

1. incronのセットアップ

incronはLinuxのinotfiyという仕組みを使ってファイル作成、変更などのイベントを検知してジョブを実行させるもの。
セットアップの方法は incronを使ってみた - Qiita が完結にまとめてくださってるのでこれを参考にしてください。

2. Slack Incoming Webhooksのセットアップ

Slackにメッセージを通知するときに使用します。
SlackのIncoming Webhooksを使い倒す - Qiita の記事がすごくわかりやすいのでこちらを参考にセットアップしてください。

3. シェルスクリプトの作成

シェルスクリプトを初めて書いたのでもっと効率の良い書き方があるかも知れません。

#!/bin/bash

set -eu
# メッセージを一時保存する場所
MESSAGEFILE=$(mktemp -t webhooksXXXX)
# 終了時に削除
trap "rm ${MESSAGEFILE}" 0

# /home/hogehoge の部分は監視したいフォルダの絶対パスを記述
# FILE_NAMEは更新が最新のファイルディレクトリを取得
FILE_NAME=$(ls -1t /home/hogehoge | head -1) 

# WebHookのURL
URL='WEBHOOKのURLをここに書く'
# 送信先のチャンネル(slack Incoming Webhooksで指定したチャンネル)
CHANNEL=${CHANNEL:-'#general'}
# botの名前
BOTNAME=${BOTNAME:-'botの名前'}
# botのアイコンになる絵文字を指定
EMOJI=${EMOJI:-':robot_face:'}
# 見出し
HEAD=${HEAD:-"*${FILE_NAME}* has been updated :male-technologist: \n"}

# メッセージ内にダブルクオーテーションは使用できないのでtrで変換
# /home/hogehoge は監視したフォルダまでの絶対パスを記述
cat /home/hogehoge/${FILE_NAME} | tr  \" \' > ${MESSAGEFILE}
# メッセージをシンタックスハイライト付きで取得
MESSAGE='```'`cat ${MESSAGEFILE}`'```'

payload="payload={
    \"channel\": \"${CHANNEL}\",
    \"username\": \"${BOTNAME}\",
    \"icon_emoji\": \"${EMOJI}\",
    \"text\": \"${HEAD}${MESSAGE}\"
}"

# 送信
curl -s -S -X POST --data-urlencode "${payload}" ${URL} > /dev/null
4. ジョブの登録

今回は新規作成されたファイルを監視したいのでイベントは"IN_CREATE"を指定。

incrontab -e 
[監視対象のフォルダ] [イベント] [実行するコマンド (3. で書いたシェルスクリプト)]

/home/hogehoge IN_CREATE /home/hoge.sh

実際の通知画面

終わりに

学習途中の正答率とlossがSlackで確認できるのが最高に便利!!シェルスクリプトつよつよになれば色んなことができそうですね。