GTX760のWin10にKerasを導入したのでメモ

ディープラーニングってやつでなんとかして!!!!

ってことで今の環境にニューラルネットワークライブラリであるKerasを導入したのでメモ

ちょっとしたバージョンの違いだけでも動かないので注意してください。

 

CUDA 9.0 の導入

NVIDIAから出してる並列処理プラットフォームのCUDAを落とします。

現在Ver10まで出ていますが、TensorflowがVer10に対応していないためVer9を導入。

Installer typeはnetoworkだとうまくいかなかったとの情報がありましたが、自分は大丈夫でした。

ちょっと時間がかかりますが、ぱぱっとインストール


developer.nvidia.com

 

cuDNN 7.3.1 の導入

CUDA専用のDNNライブラリのcuDNNを落とします。

これはNVIDIA Developerにあらかじめ登録してないと落とすことができません。また登録申請からアカウントが使えるまで1日待ったので気長にお待ちを

https://developer.nvidia.com/rdp/cudnn-download

 

バージョンはCUDAに必ず合わせます。CUDA 9.0を入れたので、「..., for CUDA 9.0」のを選択

 

f:id:Collonville:20181014205133j:plain

これはインストーラーではなくフォルダがzipで送られます

 

cuDNNをCUDAに適用

cuDNNの中に入っているファイルをCUDAにディレクトリにコピーします。

CUDAは標準だと「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0」に入っているはずです。

 

f:id:Collonville:20181014205747j:plain

 

cuDNNにはbin, include, libの3つのフォルダがありますが、その中身を上記のCUDAの同じフォルダ名の中にコピー

 

qiita.com

 

システム環境変数の確認

ここで一旦、Pathがちゃんと通っているか確認します。

過去にCUDAを入れたことがあったりすると「CUDA_PATH」が違うバージョンを示している場合があるので要注意

 

f:id:Collonville:20181014210307j:plain

Pathにも以下が通っているか確認

f:id:Collonville:20181014210431j:plain

 

Tensorflow 1.11.0 の導入

Pythonの実行するAnacodaとVisual Codeは予めインストールしておいてください。

ちなみにpythonのバージョンは3.5で(3.6でも問題ないはず)

Visual Codeのターミナル画面で仮想環境を立ち上げ「pip install tensorflow-gpu」と打てばインストールしてくれます

TensorFlow

 

f:id:Collonville:20181014211002j:plain

 

Keras 2.2.4 の導入

こちらもターミナル画面で「pip install keras」と打って実行すれば完了

Keras Documentation

 

Scipyのバージョン下げ

普通ならばここで簡単なテストを走らせれば動きますが、自分の場合AnacondaかTensorflowを入れる段階でバージョンが違うScipyが入れられたらしくエラーを吐きました。

いろいろ試したところバージョンを1つ下げたもので動いてくれました

  1. conda list」でScipyのバージョンを確認
  2. pipとcondaで重複していないか確認。重複していれば両方とも消す
  3. pip install scipy==1.0.1」でバージョン指定したのをインストール

 

パッケージバージョン一覧

とまぁなんだかんだ、以下のようなパッケージになりました。

恐らくもっとすっきりにできると思いますが...

f:id:Collonville:20181014212507j:plain

 

MNISTの分類サンプルの実行

パスとバージョンを確認したうえで、DNN基本であるMINISTの分類を行います。

コードはkerasのサンプルから丸コピーしてください。

github.com

 

.pyコードを実行すると、うまくいけば以下のように現在のエポック、ロス等が表示されます。きちんと GTX 760で回していることも確認できたのでこれでOK!!

 

f:id:Collonville:20181014213112j:plain

 

 ちなみに1エポックで130秒ぐらいかかりました。そこまでdeepではないのでやっぱGTX 760ではこの先も結構時間がかかりそう

 

Tensorflowのビルド

Tensorflowを自前でビルドする際は別途手順が必要です。

バージョンの対応表は下記リンクの一番下のページにあります

Build from source on Windows  |  TensorFlow

 

コンパイルにBazelとMSYSが必要になります。こちらもちゃんとPATHが通っていることを確認してください。

Installing Bazel on Windows - Bazel

https://www.msys2.org/

またこちらもtensorflowでバージョンが指定されています。なんでもかんでも最新のを選ぶと後々めんどくさいので要注意。

 

 

では!いいDNNライフを!

FirebaseのReal Time DatabaseとC#を使ってとりあえずメッセージを送信してみる(1)

こんにちわ、ころんです!

 

内定先の懇親会で最近「Firebaseまじ神!」「Firebaseまじすごいよ」とよく聞くのでいじってみることにしました。

 

qiita.com

loco-partners.hateblo.jp

techlife.cookpad.com

 

ファイアァァアアアアア!!!とえいえばTomollow Land 2018でSalvatore Ganacciが無理やり(?)演出係にファイアーさせてるのがツボってますw

 

Firebaseへの登録

firebase.google.com

 

FirebaseはGoogleの傘下にあるので自分はGoogleアカウントでそのまま入れました。
右上にある「コンソールへ移動」をクリックし、「プロジェクトを追加」を選ぶ。

 

f:id:Collonville:20180917150019j:plain

 

プロジェクトの作成画面で、名前とリージョンを選び作成。今回は「FireBaseChat」で

リージョンはデフォルトでも特に問題ないかと。

Set a project location  |  Firebase

 

f:id:Collonville:20180917150100j:plain

 

するとプロジェクトのメイン画面に移ることができました!

f:id:Collonville:20180917150436j:plain

 認証の設定

Firebaseの魅力にユーザー認証が容易にできることがあります。

わざわざOAuthの認証メソッドを書く必要もないし、Firebaseのプロジェクトごとに認証方法を変えられます。

webbibouroku.com

今回は、分かりやすくするために「匿名」を選びます。

 

f:id:Collonville:20180917151527j:plain

 

DBの設定

今回はユーザーが投稿したメッセージ等を格納するデータベースの設定を行います。

 

プロジェクトのメイン画面の左側にある開発から「Database」-->「データベースの作成」を選択するとセキュリティルールの設定に移ります。

 

f:id:Collonville:20180917152531j:plain

 

今回は「テストモードで開始」を選択。これでDBの設定は終わりです。

 

f:id:Collonville:20180917152205j:plain

 

DBのシークレットキー

DBへのシークレットキーは、左画面の歯車マークから「プロジェクトの設定」-->「サービスアカウント」-->「以前の承認情報」から取得できます。

しかしながら、DBのシークレットは現在廃止されているようなので今後は「Firebase Admin SDK」からの設定が必要らしいです。

今回の動作には問題ないですが、ここについても調べてみます。

 

f:id:Collonville:20180917153411j:plain

 

DBのURL

データベースへのURLは「プロジェクトの設定」-->「全般」-->アプリ-->「ウェブアプリにFirebaseを追加」を選択することで確認できます。

 

f:id:Collonville:20180917154121j:plain

 

C#でコードを書くときにこのDBシークレットキーとURLが必要になるのでメモっておいてください!

 

C#プロジェクトの作成

みんな大好きVisual StudioからC#のコンソールアプリを作成します。

f:id:Collonville:20180917154455j:plain

 

C#でゴリゴリ書くのもいいですが、せっかくなのでFirebase REST APIをラッパーしたFireSharpを使います。

 

github.com

 

Visual Studioのパッケージマネージャーコンソールから「Install-Package FireSharp」と打ってインストール。

 f:id:Collonville:20180917161149j:plain

 

さてコードですが、ラッパーのおかげで単純にテキストを送信する内容だったらこの程度でできます。


AuthSecretとBasePathにさきほどメモったDBシークレットキーとURLを記入し、実行すると「Hello, Firebase!!!」がDBの「chats/」下に格納されます。

 

gistd1d30622b27851dbd2a657396cdbfbee

 

実行後にFirebaseプロジェクトのDatabaseを見ると「Realtime Database」が作成されていることが確認できます。

 

f:id:Collonville:20180917160517j:plain



中身を見ると、先ほど送信したメッセージが格納されています!!
あら簡単!!!

画像は「!!!」の部分が見切れていますがちゃんと入っているので安心を

f:id:Collonville:20180917160701j:plain

ちなみにコードのresonceのbodyを見ると各メッセージのIDが確認できます。

まとめ

今回は、Firebaseを使ってクライアントからサーバーにメッセージを格納する処理を作成しました。

単純ですが書いたコードは僅かで実現できたのは確かに便利!

 

ですがFirebaseの魅力はまだ発揮できていないので、次回からチャットサービスの作成までやっていきますね!!

Philips ソニッケアー Healthy White 先端部修理

いつも愛用しているPhilips電動歯ブラシが突然壊れました!
歯ブラシの先端と本体をつなぐ銀色の出っ張りがグラグラになり、超音波の振動が届かず

HealthyWhite ソニッケアー ヘルシーホワイト HX6719/43 | Sonicare

f:id:Collonville:20180710192257j:plain

 

保証書もどっかいったし、新しく買うのもなんかもったいない。
本体を振っていると明らかにパーツが取れてる音がしたので、これは直せそうだなと思ったので分解しちゃいますwww

開け方は下記のページを参考。自分は細いマイナスドライバーで「▼」と印刷されている部分に入れると割とすんなりキャップは取れました。

ソニッケアーの充電池を交換してみた

 

っで下の写真が本体です。やはりパーツが取れてました。

f:id:Collonville:20180710192347j:plain

Philipsソニッケアーの本体

どこのパーツだろと探してたら、明らかに不自然なへこみが。

f:id:Collonville:20180710193034j:plain

金属部のハの字がちょうどぴったりだったので、ハメて上からねじ止めすればグラグラしなくなりました。

f:id:Collonville:20180710193244j:plainこれで直ったー!と思って外装と合わせて動作確認がしましたが、またすぐ同じ部分が取れてぐらぐらに。

2つ上の写真のネジを見ると赤い付着物があります。どうやら接着剤?で固定していたようですが、超音波の振動で完全にはがれてしまったようです。

 

ってことでみんな大好き「アロンアルファ」でねじ部と頭に接着してしばらく放置。

f:id:Collonville:20180710193541j:plain

乾いた後、動作テストをして無事修理終了。施工してから3日たちましたが、今のところ大丈夫そうです!!

 

 

 

\チャンチャン/

 

 

Visual Studio Codeの設定を完全に削除する方法

普段からVSCodeを使っていますが、なぜかpythonに関する項目でsettings.jsonに「duplicate object key」が何百のエラーを出していました。

 

意地悪なことに、ユーザーが操作できない項目になっているのでダブってる項目を削除することもできず...


結果的にアンインストールして入れなおそうと思ったのですが、ただアンインストールするだけでは以前DLした拡張機能やsettings.jsonが残ったまま!

解決策

アンインストール後にフォルダを漁ってると「C:/Users/(ユーザー名)/」に「.vscode

というフォルダを発見。


どうやらこの中に過去の設定群が残ってるらしく、削除した後VS Codeを入れたら無事初期化してくれました。

 

 

(;´д`)

 

 

python「OSError: raw write() returned invalid length ... やで」

Numpyを使って行列計算の確認用にprint()を使っていたのですが、
ある日から突然エラーを吐くようになりました。

 

OSError: raw write() returned invalid length 4 (should have been between 0 and 2) 

 

数字はコードによって変わりますが、自分の場合は何回かprintされてから上記のようなエラーが出てきます。

 

解決策

下記を参考に修正しました。

 

qiita.com

 

下記のコードを記述すればエラーは消えますが、Anacondaを使っている人は
conda install -c anaconda win_unicode_console」を使ってパッケージを導入する必要があります。

 

import win_unicode_console
win_unicode_console.enable()

 

Win Unicode Console :: Anaconda Cloud

 

PythonでCIE 1931 xy色度図を描画する方法(COLOUR)

色に関する研究をしていると、色空間について考えることがよくあります。

表示デバイスに依存しない、人間の視覚可能な色域はCIE xy色度図で表現することができますが、pythonでなんとかこれを表示したい!っということでいいライブラリがあったのでメモ。

 

COLOUR

colour-science.org

 

COLOURはPythonベースの色研究をしている人のためにライブラリです。

インストールはAnacondaやPypiGithubリポジトリから落とせるので簡単楽ちん。
(Installation Guide | colour-science を参照)

データの扱いは、よくある「(H, W, 3)」の3次元でなく「(H×W), 3」で渡します。 

機能

自分が把握している機能としてはざっとこんな感じ(2017/12/20時)
間違いがあればご指摘お願いします。
Features | colour-science

  • Biochemistry(生化学)
     
    Michaelis–Menten kinetics(ミカエリス・メンテン式)

  • Colorimetry(測定色学)
     Spectral Computations(スペクトル評価)
     Spectral Bandpass Correction(スペクトルバンドバス補正)
     RGB and XYZ Colour Matching Functions Spectral Dataset
      (RGBとXYZの等色関数スペクトルデータセット)
     Cone Fundamentals Spectral Dataset(錐体分光感度スペクトルデータセット)
     Photopic & Scotopic Luminous Efficiency Functions Spectral Dataset
      (比視感度スペクトルデータセット)
     Colour Matching Functions Conversions for Educational Purpose
      (等色関数の変換(学術目的))
     Illuminant Spectral Power Distribution Computation(分光分布評価)
     Illuminant Spectral Dataset(分光データセット)
     Light Source Dataset(光源データセット)
     Lightness Computation(明るさ算出)
     Luminance Computation(輝度算出)
     Whiteness Computation(白色算出)
     Yellowness Computation(黄色算出)
  • Colour Temperature & Correlated Colour Temperature(色温度&相関色温度)
     
    Correlated Colour Temperature Computation Methods(色温度算出関数)

  • Colour Models(色モデル)
     
    Colourspaces Transformations(色空間変換)

     OETFs(光電気伝達関数)
     EOTFs(逆光電気伝達関数)
     OOTFs
     Log Encoding / Decoding Curves(Log変換、逆変換?)
     RGB Colourspaces(RGB色空間)
     Convenience Deprecated Colourspaces Transformations(廃止予定の色空間変換)

  • Chromatic Adaptation(色順応) 
     
    Chromatic Adaptation Models(色順応モデル)
     Chromatic Adaptation Transforms(色順応変換)

  • Colour Appearance Models(色外観モデル?)

  • Colour Difference(色差)
     
    Delta E Computation(ΔE 算出)
  • Colour Notation Systems(カラーシステム)
     Munsell Value Computation(マンセル値算出)
     Munsell Colour Transformations(マンセルカラー変換)
     Munsell Colours Dataset(マンセルカラーデータセット)
     Hexadecimal(16進数変換)
  • Characterisation(色再現?)
     Colour Rendition Charts (カラーチャートスペクトルデータセット)
     Colour Rendition Charts Chromaticity Coordinates(カラーチャート色度)
  • Light Quality(光品質)
  • Optical Phenomena(光学現象)
  • Reflectance Recovery(反射率)
  • Volume(ボリューム?)
  • Input & Output(入出力)

 

 CIE 1931 xy色度図のプロット

なんやかんやと紹介したところで本題のプロットへ。

 

表示するだけでなら以下だけのコードでOKです。
「bounding_box」パラメーターは見やすくするために座標軸を設定しています[https://gist.github.com/cdfbfb425c34d5a73ee0c55d54298a4c:embed#gistcdfbfb425c34d5a73ee0c55d54298a4c

出力

f:id:Collonville:20171220180210j:plain

 自分で他の物をプロットしたい

最大値を1.0に正規化したRGBをそれぞれ15分割させ、sRGBに基づいてxy空間へプロットしてみます。

プロットはmatplotlibをそのまま使えるので便利です。

 

gist.github.com

出力

f:id:Collonville:20171220181759j:plain

xy色度図にsRGB領域をプロットできていることが確認できました。

 

 

自分が今就活して思っていること

こんにちは!ころんです!!

今年も毎年恒例のAdevent Calendarの時期がやってきたので、忘年会帰りでふわふわしていますが17日目を書いていきます。

多少長くなるとは思いますが、読んでいただけると幸いです。

adventar.org

 

いよいよ自分も就活開始

題目の通りですが、今絶賛就活中です。

まだ先のことやろぉ~wとか思っていたら、もうそんな時期なんですよね。

よく回りからは「早くね?」って言われますが、決してそんなことはないです。なんならもうすでに行く会社が決まっている学生も多くいます。

 
早めに内定するから良いっていうわけではないですが、早めに決まる学生にはそれなりの理由があると思っています。

今日は、そういった学生がどういう人なのか自分の経験も踏まえながら書いていきます。

 

※今日の内容は決して内定をGETすることを目的した記事ではないです。主に自分がいかに成長できるか、その考え方について書いていきます。

 

あなたは優秀ですか?

 90%の学生はたぶん「NO」って答えるでしょう(個人的な指標)

 「別に成績が良いわけじゃないし、何か大会で賞取ったわけではないし...」と思っている人が多いと思います。

いいんです。今日はそういうことを責めに来たわけではないですから。

 

 

ここで大事なのは、「優秀とは」何なのかってことです。

学生の場合は成績が上位にあると思いがちですが、自分は

 

「何か夢中になって打ち込んだことがある人

 

が優秀な人だと思っています。内容は何でもいいです。

勉強、イラスト、音楽、プログラミング、クラブ遊び、ソシャゲ、ナンパ、....

趣味とかに没頭したことがあるかの質問に近いです。

 

これなら、「ある!」って答える人は多くなると思います。

「少しだけ...」とかあいまいな言葉はなしで、YESNOかで考えてみてください。

1時間でも、何かに打ち込んでやったことはないですか?

 

何が言いたいかっていうと、内定が早く決まる学生はここで言う「優秀な人が多いんです。更に1つのことに頭する時間が長いのも特徴としてあります。

 

時間をかければそれだけその分野に詳しくなり、できることが増えます。

Googleの研究本部長を務めているPeter Norvingは「何かでエキスパートになるには約1万時間の訓練が必要」と述べていますが、まさしくその通りで優秀になるにはとにかく時間が必要です。

https://プログラマが知るべき97のこと.com/エッセイ/1万時間の訓練/

 

何かに時間をかけてやってきた人は、自分に自信があり、技術があります。

裏ではものすごい時間の訓練をしてきたからこそ、周りから優秀だって言われるのです。

 

ここめっちゃ言いたいので言わせてください。

学校では成績しか評価してくれませんが、

就活では「夢中になったこと」について評価してくれます。

 

ESに趣味欄があったり、面接で失敗談とか成功談を話すのってこういうことだと思うんですよね。 時間をかければ失敗することも成功することも自然と体験するはずです。

それがない人は、まだ訓練が足りないか、成功失敗点に気づいていないかだと思います。前者の人はこれからも継続していきましょう。後者の人は過去について注意深く振り返ってみましょう。

 

「あなたは優秀ですか?」の問いにNOって答えた人!
今好きなこと、夢中にしていることを追求していきましょう!!

 

 逆求人に参加しよう!

とはいいつつも、自分の打ち込んだことについて評価してくれる人がいないと、今までの行いに意味があったのか分からなくなります。

 

そこで自分がおすすめしたいのが逆求人です。

逆求人とは、普通「企業-->学生」に行う求人を「学生-->企業」で行うことができるイベントです。

エンジニア職中心ですが有名どころだとこの2社が運営しています。

supporterz.jp

www.studenthunting.com

 

 このイベントの一番のポイントは、「自分の今まで行ってきた活動を直接企業さんにPRできる」ということです。

つまり、今まで頑張って没頭してきた事を評価してもらえるということです!

しかも参加する企業はメガベンチャー、ゲーム会社、誰もが知る大手、できてまだ数年のベンチャーなど様々。

 

この早い時期に就活を始められたのも逆求人のおかげでした。

 

自分がこれまで高専プロコンやIT企業でのアルバイト、インターン、個人製作についてアピールした結果、夏には数社からインターンのお誘いを頂きました。


実際のインターン体験談は別の記事でまとめたいと思います。

 

この逆求人に参加する際、自分を紹介するためのプレゼンを最初に5分間行います。

その5分間で自分の「過去・現在・未来」を初めて会う人に紹介するのです。

 

となると、自分がどういう人間なんなのか、自己分析をしないといけません。
ある意味これが逆求人のすごいところで、実際にスライドにまとめるとなるとめちゃくちゃ時間がかかりました。

 

 

今からパワポを開いて実際にやってみると分かると思います。

「あなたがどういう人でこれから何をしたいかを5分間のプレゼンにまとめてください。」

ハーイドン!!

 

 

 

 

 

 

 

 

。。。

 

 

 

 

 

 

 

 

どうですか?

1ページ目からどうすればいいか分からず手が止まる人が多いと思います。自分もそうでした。自分の世界観を出しつつアピールすることは、とても難しいことです。

 

しかし、就活の際はこれらを面接で突然問われます。ストーリー性を立て、やりたいことをアピールするには前準備がないとできません。

これから就活を始める人も始めない人も、一度自分の人生をスライドにまとめてみるとこういった準備もできて、気づけなかった発見もあると思います。

 

優秀な学生は、この自己分析を早い段階で実施しており、自分の事に問われた内容はしっかりと答えられます

 

ちなみにですが19卒の逆求人は、もうあと数回しかないと思います。

せっかくのチャンスを生かして、自分をアピールしていきましょう!!

 

日本の就活怖い

海外の就職事情はよく知りませんが、日本の就職怖くないですか??

 

だって就職の「解禁」って言葉があったり、会社のことがよくわかるという名目で開く実質数時間の1dayインターン、手書きの履歴書、etc...

 

業界や分野によってはその適正を見ないいけない部分もあるとおもいますが、無駄なことが多いように感じます。

学生側も一人で50社受けるとかもよく聞きます。

 

就職は自分の考えやビジョンと合う企業とのマッチングだと思っています。

会社の文化や考え方、やりたいことが本当に合うところを考えたらかなり絞られるかと。

 

数打てば当たる就職だと入ってからのビジョンの違いが出てやる気のない仕事をしちゃうでしょう。

自分が本当に行きたい企業を選んで、熱意を伝えていくのが本当の就職だと思います。

 

面接・SPI対策、やるのも良いと思いますが、まず考えないといけないのは自分のビジョンなのではないでしょうか??

  

会社の人事さんへのお願い

ここまでいろいろ書きましたが、自分が学生側の立場として思ったことを書かせてください。

 

まず、同じ会社でも会社説明を行う人の印象でかなりイメージが変わります。特に悪いイメージがつくとなかなか会社の良いところも聞き出せなくなりますので。

 

2つ目に、積極的に学生に質問してください。たまに、学生からの質問を待つだけのスタイルを取っているところがありました。一方的ではなく、双方向にコミュニケーションをとるのが面談や面接だと思っているので、学生の経歴やコアな部分を突けるようにお願いします。

 

 まとめ

今日は、自分が思った優秀な学生と就活についてこれまで経験に基づいて書きました。

まだまだ付け加えたいところもありますが、収拾がつかなくなりそうなので一旦ここで締めます。

 

賛否両論あるとは思いますが、いろんな人の考えを吸収したいと思っているので何か思ったことがあればどんどん流しちゃってください!