強弱と高低

Python3をメインに

python sklearn MinMaxScalarの入力データを reshapeするときのエラー

以前みたいに入力に無頓着には済まされなくなった

(224, ) みたいな形の入力を受け付けていた以前のヴァージョン(現在は0.20.3)とは異なり, ちゃんとエラーを吐くようになった.

例えば,

ValueError: Expected 2D array, got 1D array instead:
array=[1.85268248 2.95032978 2.37982995 ... 2.92069693 2.33497796 3.37038089].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

なるほどねreshapeね.(くらいにしか読まなかったので苦労した)

大事なのは行列が1行なのか1列なのかということ

もう一度エラー分を見てみたい.

Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

reshapeすりゃええか, ではなくちゃんと書いてある. 1つの特徴量しか使わない場合は array.reshape(-1, 1) , 1つのサンプルだけで入力したいときは array.reshape(1, -1) を使いましょうと.

これを間違えて,逆に(1列行列を作るべきところを1行行列を入力させてしまうと)すると次のような不思議なエラーが出てきてしまう.

ValueError: non-broadcastable output operand with shape (1024,1) doesn't match the broadcast shape (1024,1024)

もはやここまで来てしまうと, エラー文から間違いを探すのは厳しい. 実際に検索してみたが, 有用な情報は全く出てこなかった.

エラー文をよく読まないと1日が溶けてしまう

最近のライブラリたちはエラー文が丁寧になっていて, よく読まずにコピペして検索したほうがほしい情報が得られるやすい,という ちょっと昔の技だけでもないと痛感させられた.以後注意します.

Xperia Ear Duoは安全に日常を送れるアイテム

Xperia Ear Duo とは

両耳セパレートタイプのBluetooth接続によるイヤホン.しかし,外部音響がもろに入ってくるので これは新しい.さながら,耳元にスピーカーがある感じ. www.sonymobile.co.jp

Bluetooth接続とはいえ,専用のスマホアプリを通してしか接続できない. なので,PCと接続するようなことはできないので注意.

何が安全につながるか

今までのイヤホンは外部の音を遮断するか,外部の音を集音してイヤホン内に流す方法があった. 一方このEar Duoは外部の音が耳に直接入ってくるので,外音を合成して流されたり ほとんど遮られるような違和感が少ない. 違和感が無いためとても気分良く日常が送れる.

更に,外音が聞こえるので歩きながらつけていても背後に気が付かなかった,とか 落とし物をしたドサッという音を聞き逃した,であったり職質をスルーして激怒した警官に追われるとか そういうものが一切なくなった. それだけでも十分なくらい安全性が増したはずである.

Xperiaアシスタントは微妙だがGoogle アシスタントも使える

Xperia アシスタントなるものがアプリに入っているので 通知の読み上げであったりニュース読み上げ,時報などを教えてくれる. アスナの声のアプリも購入できたりするが,合成音声がまだまだといった感じ. 合成音声は,一瞬で合成されているのがわかる. でも,日本語の読み方はあってることが多い.辞書が優秀なんですね. まだまだ他にもできることがあるらしいが,LINE Clova?と連携が必要であったり 諸々の制限が面倒.Google アシスタントの呼び出しが「OK Google」という 口に出すだけで恥ずかしい呪文を口にせず,タッチセンサーに触るだけで呼び出せる. 今日の予定を教えて,くらいなら口にしても恥ずかしくないので自分としてはかなり快適. Podcastsも流せたりするので嬉しい.

音量

音量はずっとイヤホンに慣れてきた人なので小さいなー聞こえないなーと思うことはある. 音量上げすぎたら外音が聞こえなくなって意味がなくなってしまう. 一つ面白いのは,外部の騒音レベルが上がると耳元スピーカーの音量も自動で上がるということだ. 騒音を判定してくれるのは助かる.

音漏れ

もともと音が漏れてるような仕組みだが,どうもあまり漏れていないようだ. 耳元までくると初めて音が聞こえる,とのこと.

まとめ

外音が聞こえるのでとても快適に,安全に日常が送れるスグレモノ. アシスタントはあまり使わないかもしれないが,通知読み上げだけは助かる. 音量が小さいと感じるのはインイヤーじゃないから仕方ない. 音漏れは気にしなくていい. これは買ってよかった.

産総研スパコン ABCI でFTPクライアントを使う

SFTP使いたい!

研究をしているときでも,結果やデータの送受信をリモートとローカルで行いたいと思うことは当然ありますよね.ABCIのストレージとSFTPをしたいときにどうするか?を自分のためしたことを書きます.

環境

設定内容

サイトマネージャーを開いて新しいサイトを追加します.

そして,

これを記入したら接続(*2)でOK.

*1 : 秘密鍵は,Ubuntu 18.04 LTS側で作成したことを前提としている.このbash on windowsは,ホームディレクトリがCドライブのどこに対応するのか今もわかっていないため,/mnt/c 以下にフォルダを作ってそこに秘密鍵を置いている.セキュリティ的ニハー というのは妥協しました.

*2: 接続するときは,ポートフォワーディングしているのが前提.ポートフォワーディングはユーザーズガイドを参照されたい.

産総研スパコンAI橋渡しクラウド ABCIを使ってみた

ABCIとは

産業技術総合研究所東工大が提供し始めたスパコンである.
トップページの文言を引用すると, 次のとおり.

AI橋渡しクラウド(AI Bridging Cloud Infrastructure、ABCI)は、国立研究開発法人 産業技術総合研究所が構築・運用する、世界最大規模の人工知能処理向け計算インフラストラクチャです。2018年8月に本格運用開始しました。

https://abci.ai/ja/
橋渡しクラウド.... うん,そういう名前もアリだね,うん.

率直にいって

想像してたよりずっと使いやすい. 一番は,対話型のシェルが起動できることだろう. だいたいは, シェルスクリプトを投げて,実行を待つという,いわゆるバッチキュー型が多いと聞く. もちろんABCIでバッチキュー型も使えるが, 対話型のシェルが起動できるのもありがたい.

どう使うのか

次のような手順.とても簡単.

  1. インタラクティブノードへログイン
  2. (対話型なら)計算ノードへログイン
  3. 実行!

事務手続きについては省くとして, まずはインタラクティブノードへログインする. ここはいくら滞在していても無料. ただし,ここで計算を回すとBANになりそう(当然).

そして, 計算ノードへログインする. そして,スクリプトなりを実行する. とても使いやすい.

開発環境についても, インタラクティブノードで構築した環境を 対話型ノードへ引き継げる ので対話型ノードへログインしてすぐに使える.

もちろん, 「インタラクティブ実行型ジョブサービス」というのが, 対話型シェルであり, 「バッチ実行型ジョブサービス」というのがシェルスクリプトを投げて計算する方法である.

ストレージは?

各アカウントのホームディレクトリには, おおよそ200GB 割り当てられており, そこにデータは無理にしてもコードは置くことができる. チームのディレクトリを1TB単位で借りることができるので, それを主に利用することになりそうだ. チームのディレクトリへシンボリックリンクをはれば何も気にせずTB単位のストレージにアクセスできる.

計算ノードの使い勝手

インタラクティブノードへログインしてから, 更にこの計算ノードへログインする必要がある. 気になるのは, 対話型ノードで計算を開始したとき途中で離脱するにはどうするか?だ. 今のところインタラクティブノードでtmuxを起動して, そこから計算ノードへログインしている.

課金は,計算ノードへログインしている時間でとられるよりも, 計算を実行している間だけとられるようだ. ちなみに ls するだけでも1円とられた(汗). lsって高い....

ログインするには?

ユーザーガイドを参照するのが最善だが.... 次のようなssh-configが存在することを前提とします. また,公開鍵の登録を事務的にしておかなければログインできないのであしからず. 公開鍵の登録については,公開できるドキュメントが無いので,利用開始後に送付される 手続きを参考にしてください.

Host abci
   HostName localhost
   User <your_user_name>
   Port 10022

Host abci_forward
   HostName as.abci.ai
   User <your_user_name>
   LocalForward 10022 es:22

事前にポートフォワーディングする

ポートフォワーディングをするためだけにターミナルを1つ立てておく.

ssh -L 10022:es:22 -l aaa10285cd as.abci.ai

ログインする

localhostの10022ポートにアクセスするように設定してやることで,ログインする.

ssh -p 10022 -l aaa10285cd localhost

おわりに

使い方がきになったら, ドキュメントを参照しましょう. dockerとか使えていいですね. python環境がインタラクティブノードと計算ノードで同じなのも良い点. バッチは使ってないので知らない.使ってみたら更新してみようかな.

portal.abci.ai

Keras2でカスタムレイヤー(自作の)の読み込みをする

Keras2でカスタムレイヤーを作った時

load_modelを単純にしようとすると,「そんなLayerは無い」と怒られる.

load_modelの引数を追加する

load_model(model_name, custom_objects={'AAA': AAA}) としてあげる.

FAQ - Keras DocumentationHandling custom layers (or other custom objects) in saved models に記載されている例のとおりにすると,

AttentionLayerを追加したとすると, load_model(model_name, custom_objects={'AttentionLayer': AttentionLayer}) としてあげるということ. 基本的に文字列を与える部分は, クラス名と同じになる.

ファイルを列方向に結合するpasteコマンド

テキストファイルを列方向に結合できるコマンド.
実際に,2つの文章を比較するときに必要になるコマンド.

大変便利なコマンドを知ったので,書かざるを得なかった.知らなかった.....

参考URL

pasteコマンドについて詳しくまとめました 【Linuxコマンド集】

pasteコマンドで横方向に複数ファイルを結合する | ITを使っていこう

pasteコマンド:複数のファイルを水平方向(横方向)に連結する - pwd-it:IT資格の勉強ブログ