2016/03/31

[win10]「ストア」を戻す

勢いで、いろいろアンインストールする傾向にある私。
Windows10のストアアプリの中の「ストア」も、いつの間にかアンインストールしていた。。。

Windows10でUbuntuのコマンドがそのまま使える(全部じゃないんだろうけど)しくみがストア経由で配布される予定らしいので、元に戻すことにした。

 

これが、なかなかいい情報がない。
OSからやり直しというのは避けたい中、こちらが見つかった。
Windows 10 で普通にはアンインストールできないビルドインアプリを削除する | Lonely Mobiler

一番下にアンインストールしたストアアプリを全部戻すやり方が書いてある。
これを「ストア」だけに絞る。

まず、PowerShell(管理者)で「ストア」がどういう名前かを検索。

Get-AppxPackage –AllUsers | Select-String “store”

Select-Stringがgrepみたいなコマンドらしい。
うちでは、この2つが出てきた。

Microsoft.ConnectivityStore_1.1511.2.0_x86__8wekyb3d8bbwe
Microsoft.WindowsStore_2016.27.2.0_x86__8wekyb3d8bbwe

あとは、Add-AppxPackageをすればよいのだろう。
引数がわからないので、ブログにあったやり方のAdd-AppxPackageをechoに変更してみる。

Get-AppxPackage -AllUsers | Foreach {echo "$($_.InstallLocation)\AppxManifest.xml"}

ずらずら出てくるが、

C:\Program Files\WindowsApps\Microsoft.Office.Sway_17.6769.45081.0_x86__8wekyb3d8bbwe\AppxManifest.xml

みたいな感じらしい。
赤い部分が、さっきのSelect-Stringで抽出した文字列になればよいのだろう。
「ストア」はたぶん2つ出てきたうちの下だろうから、こうした。

Add-AppxPackage -DisableDevelopmentMode -Register "C:\Program Files\WindowsApps\Microsoft.WindowsStore_2016.27.2.0_x86__8wekyb3d8bbwe\AppxManifest.xml"

復活!

2016/03/27

[統計]ロジスティック回帰?

気になったので、ロジスティック回帰について書いてある本を買ってきた。

O'Reilly Japan - 統計クイックリファレンス 第2版

統計学の本って、いろいろあるのね。。。
本屋でかなり悩んだ。
私は博多駅横にある交通センター6階にある紀伊國屋でだいたい買うのだが、その本棚の2列分が統計学だった。
その1列は、SPSSとかRとかSASとか、何かそういう言語かツールを使って実現するための本っぽかった。

この本は、分厚い。
CR2032の大きさと比較してみると、このくらいだ(関係ないけど、2032とか2016の後ろの2桁は厚みなのね)。

image

最初から読まなくていい、と書いてあるが、読んでいってもなかなか面白い。
以前悩んでいた、条件付き確率のことなども書いてある。

あまり重苦しい文体ではなく、文章を読んでいても面白い。


ロジスティック回帰のところまではまだ読み進んでないが、線形回帰のところを読んでいる。
例では、身長と体重の関係が題材になっている。
身長が高い人は、だいたい体重も重たくなるよね、という仮定を元に、その傾向を1次式で表す。

体重=身長×係数+定数

もちろん、これが必ずしもそうはならないのはわかるけど、まあ、だいたい、そうじゃないの?くらいで進めるようだ。
で、この推測に基づいていくつかのデータを取って、データを満たしそうな式を作る。
最小二乗法とかそういうやつですな。
この式を「回帰方程式」と呼ぶ。

じゃあ「回帰」はなにかというと、たぶんだが、こういうやり方自体を指している。
これは線形式に当てはめるので「線形回帰」とか「単純回帰」とか呼ぶようだ。

入力の変数が2つ以上だと「多重線形回帰」などになるらしい。
変数が1つじゃなかったら線形にならないんじゃないの?という気もするのだが、よく読めばわかるのかもしれない。

そして、出力結果(従属変数などと呼ぶ)が2値の場合の多重線形回帰を効果的に扱う回帰技法が「ロジスティック回帰」のようだ。
CNTKのチュートリアルやSimple2dも、ラベルは0か1の2値だ。

そこがわかれば、ひとまずはよいかな。
統計のことは勉強しても面白そうなので、もうちょっと読んでいこう。

2016/03/26

[DL][cntk]NDLを書いてみよう (2)

Open Live Writerでソースコードを載せられるプラグインがあったので、使ってみよう。
あ、これってWordPress用だ。。。
Tableと組み合わせれば、まあまあいいかな。

 

・・・OpenLiveWriterではほどほどに見えていたのですが、アップしたら化け化けだったので消しました。


さて、このNDLとネットワーク図を見比べよう。

最初のInputであるfeaturesは、SDimになっている。
サンプルの行列はSDim行1列とあるから、こういうやつか。

image

ラベルは、label0かlabel1と書いてある。
じゃあ2次元やん、と思うけど、binary classficationで、p(y=0) = 1 – p(y=1)とも書いてある。
YESかYESではないか、ということで1次元というサンプルの意味になっているのかな?

ちなみに、このチュートリアルのトレーニングデータと、Simple2dのトレーニングデータは同じ並びで、3列のデータのうち、最初の2列がサンプルで、最後の1列がラベルになっている。
そして、ラベルはどちらも0か1だ。

だから、Simple2dも1次元でやることができるのだろうと思う。
データの認識の仕方が違うだけと言うことか。


これでデータの準備ができたようだ。

チュートリアルでは、ロジスティック回帰の評価式をこう定義している。

y = W_0 + W_1 x_1 + W_2 x_2 + ...

なんですっけ、マクローリン展開じゃないけど、ああいう感じがしますな。
ともかく、W_0がバイアスで「B」、W_1以降が重みで「W」と表現する、と。
それが、この部分。

B = Parameter(LDim, 1)
W = Parameter(LDim, SDim)

ナゼコウナッタ…

この辺りが、Logistic Regression(LR)として説明されているのだろうか。
英語だけわからないのであれば読んでみようと思うが、きっと確率論がわかっていないと理解できないんだ!と思い込んでしまったので、読む気にならない。。

ただ、そこに描かれているlogistic functionは、『深層学習』p.10の式と同じだ。
そういった共通の知識の下(たぶん確率論)で通じる話題なのだろう。

だから、今回は深読みせず、スルーだ。
これで決まったパラメータが、ようやくネットワークに出てくる。

t = Times(W, features)
z = Plus(t, B)

image

このTimesはパラメータW_1~の積和で、PlusはバイアスW_0を足すところですね。
この積和が、専用演算を持ってると1命令で計算できたりするので高速化できたのだったと思う。
積和というと、行列で物体を回転させたりとか平行移動するようなアフィン変換でも使われるので、ゲームとかの画像処理ではよく使うため、GPUでその辺りが強化されている・・・という流れで、深層学習でもGPUを使うものが多いんじゃなかろうか。


ネットワークの最後が、こう。

s = Sigmoid(z)

LR = Logistic(labels, s)
EP = SquareError(labels, s)

image

バイアスまで足した結果のzをシグモイド関数に突っ込んで、それがEPとLRのInputになっている。
EPとLRのInputはもう1つあって、それがlabelだ。
labelがInputになるということは、答え合わせだろう。

まずは、EP。
これは何の略だろう?
SquareErrorで検索すると、二乗誤差、とあった。
二乗誤差で検索すると、平均する結果が多く出てきた。
RMS、と略するらしい。

うーん・・・
labelは、(x1, x2)が1か0かという「正解」で、sはシグモイド関数の結果だから0.0~1.0の値だ。
ということは、シグモイド関数に通した結果が、0.0に近いのか1.0に近いのかという、分類分けの確率を想像した結果という意味になる。

えー、だって、掛けて足しただけやん!
それをシグモイド関数に通しただけで学習結果が得られるの??

もし結果が全部正解なら、誤差は0だから、二乗誤差も0になる。
そうでなくても、確率が高い方に寄っているなら、二乗誤差も小さいことになる。

 

じゃあ、LRはなんだ?
これはLogistic Regressionの略だろうけど、ロジスティック関数に通すのだろうか。
しかしそれならば、Inputは1つでいいはずだ。
うーーーん・・・

 

最終結果は、これのようだ。

Final Results: Minibatch[1-1]:
  Samples Seen = 603
  EP: SquareError/Sample = 0.032142105
  LR: Logistic/Sample = 0.22066998

EPは、まあわかる。1サンプル辺りの二乗誤差だ。RMSだ。
LRも「/Sample」だから1サンプル辺りなのだろうけど、よくわかりませんな。

次回だ、次回。

[DL][cntk]NDLを書いてみよう (1)

Deep Learningというよりも、MicrosoftのCNTKの話になっているので、ラベルを追加した。

さて、前回まではSimpleNetworkBuilderという標準のネットワークを使っていたのだけど、どういじってもあまり代わりばえしないので、何というか達成感が少ない。
じゃあ、次はネットワークを自分で組んでみるか、というところだった。

 

Tutorial · Microsoft/CNTK Wiki
これが、一番最初のチュートリアルだ。
長い・・・・。
これまでやってきてようやく、自分が理屈をわかっていない、ということがわかってきた。
理屈というか、統計に関する基礎がないので、たぶん意味がある説明であっても読み流したりしているのだと思う。

たとえば、このチュートリアルの最初に「Logistic Regression」というのがある。
Logisticといえば、私にとってはロジスティック関数しかなく、ロジスティック関数と言えば活性化関数の1つ、という認識だ。
しかし、ここはRegression。
リグレッションというと、よくテストで出てくる「修正したことによって前OKだったところがNGになってないかもう一度やってみよう」の退行テストくらいでしか聞いたことがない。

“logistic regression”で検索すると、どうも「ロジスティック回帰」ということらしいのだが、それが何だかわからない。
統計の話で、モデルとか何とか。。。

以前、活性化関数の選び方を調べていたけど、順番としてはそうではなく、解析方法だかなんだかが「ロジスティック回帰」だからとか、そういう理由で決まっていくのだろうか?

ともかく、深層学習の本にはそういったことは書かれていなかったので、もっと知識があればわかってくるのかもしれない。
とりあえず「理解できて当然なのにわかってない」という訳ではなさそうで安心した。


そういうのもいずれは調べるとして、まずNDLのサンプルをSimple2dで試してみよう。
やるのは、Simple.cntkのSimpleNetworkBuilderのところを、これに置き換えるだけだ。

うん、実行するとエラーになった。
ラベルの次元がreaderとあってない、ということらしい。
readerのlabelsの中を見ると、dimは1なのだが、labelDimは2になっている。
ネットの方はLDim=1になっているから、LDimとlabelDimが同じ次元じゃないといけないのかな。
LDim=2にすると、最後まで行った。

ラベルって、SoftMax関数とかで最後に分類する数のことだよな?
MNISTだったら数字が10個あるので、10次元になるのか。
じゃあ、このサンプルが1次元というのはどういう意味なのだろう・・・。
せめて2つには分類しそうなものだが。

 

できたのは、こういうネットワークとのこと。

image

最後はSoftMaxじゃなくてLogisticで終わるんだが、どういうことなんだろう?
しかも、その前にSigmoidがあるから、このLogisticは活性化関数のことではない??
章のタイトルも「Logistic Regression」だから、分類分けするのではなくて、ロジスティック回帰というものをやるサンプルと言うことなのかな。

 

なんかもう、ちょっとやっただけでこんなにぼろが出るとは・・・。
まあいい、まだわかってないだけだ(強がり)。

2016/03/23

[nrf]SDK v11ではクロックの指定方法が変わった

nRF5 SDK v11.0で、今までのソースをビルドした。
うん、特に困らずビルドできた。

ただ、examples/bspを自分の環境向けに追加していたのだが、v10で動いていた設定をv11にコピーすると、コンパイルエラーが発生した。
見ると、クロックの指定が変わっていた。

今までは、

NRF_CLOCK_LFCLKSRC_XTAL_20_PPM

みたいなマクロを指定していたのだけど、これが構造体になったのだ。

#define NRF_CLOCK_LFCLKSRC  {.source = NRF_CLOCK_LF_SRC_XTAL,            \
                             .rc_ctiv = 0,                               \
                             .rc_temp_ctiv = 0,                          \
                             .xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_20_PPM}

 

構造体は、nrf_clock_lf_cfg_tという型名。
メンバのctivは、Calibration Timer InterValの略らしく、内蔵クロックの場合に使うそうだ。
以前の「4000MS_CALIBRATION」のような部分なのですかね。
単位は、1/4second、ということで、250msec。

temp_ctivは時間じゃなくて、温度を見に行く頻度を示すようだ。
以前の「TEMP_4000MS_CALIBRATION」などですかね。

 

BLEで使う水晶発振子って、どのくらいの精度を求められるんでしょうね?
以前のマクロ名からすると、内蔵の場合は250ppmくらいだから、そんなに高くなくていいのかな。
CentralとPeripheralがどうやって送受信タイミングを計っているのかよくわかってないのだ。
Centralはいざとなれば受信しっぱなしでもいいのかもしれないけど、Peripheralは寝るタイミングがあるはずだから、ある程度の同期はいると思うのですよ。

2016/03/19

[nrf]nRF5 SDKからS110が消えた!

消えたのだ。

Nordic Semiconductor Infocenter

この4つしかリストに無い。
とうとう、そういう時代になってしまいましたか・・・。

 

nRF51822だと、S130が代わりになるだろう(nRF51422もか)。
nRF52832は、S132だ。
S212とS332はnRF52832向けで、S212がANTのみ、S332がBLE+ANTのようだ。

じゃあ、nRF51822のS110, S120, S210, S310はnRF51 SDK v10.0.0までということか。
ANTを使うならv10.0.0までということかな?

私はANTを使ったことが無いので、S130に移行する準備を始めた方がよいだろう。
以前S130のv2.0.0α版を動かしたときは、アプリの変更がほとんど発生しなかった。
S110でifdefしてるところがあれば、S130も追加しておけばよいとか、そのくらいだったような。

そうしておけば、急なnRF52832への引っ越しも大丈夫!だと思う・・・。
まだnRF52832で技適が取れているボードがないから、よくわからんがね。
そうそう、nRF52832ボードでNordicのセミナーで配布されたバージョンは、Errataを参照して反映させるとよいですよ、とNordicのどこかのページに出ていた。
まあ、うちにあるのはPreview版だから関係ないんですけどね。。。

2016/03/18

[nrf51][nrf52]nRF5 SDK v11.0.0

NordicのSDK情報と言えば、こちら。
developer.nordicsemi.com:/

たまには確認しておくか。

ふむ、まだ昨年から更新されてないな、よしよし。

image

 

まあ、一応nRF5は確認しておくか。

image

 

えっ・・・。

image

 

はい、というわけで、久々にメジャーリリースだと思います。
Nordicのブログにも出てますな。
Production release of nRF5 SDK v11.0

では、恒例の更新日時履歴を載せよう。

  • v6.1.0 : 2014/08/29
  • v7.1.0 : 2014/11/26
  • v7.2.0 : 2015/01/15
  • v8.0.0 : 2015/03/06
  • v8.1.0 : 2015/05/07
  • v9.0.0 : 2015/07/10
  • v10.0.0 : 2015/11/09
  • v11.0.0 : 2016/03/11

今回は、ずいぶん間が開きましたな。
nRF51とnRF52の統合が図られたのであろうか。

2016/03/14

[eclipse]Build VariablesでIndex用のインクルードパス設定

ARMのコンパイルは、GCCを使うことが多い。
コンパイルだけならコマンドラインでいいのだが、デバッグするのはテキストエディタと連動してくれたツールが無いとつらい。
なので、普段はeclipseを使っている。

eclipseはよくやってくれるのだが、エディタ画面でこういうマークが出てくるとがっかりしてしまう。

image

そう、インクルードパスがわかってないので、読み込めなかったことを示しているのだ。
気にしなければよいのだけど、せっかく示してくれるのなら解決したい気もする。
以前も似たようなことをやったのだけど、もうずいぶん前なので調べ直すことにした。


基本的には、プロジェクトのプロパティでパスを設定すればよい。
こんな感じ(nrftestはプロジェクト名)。

image

nRF51 SDKのようにSDKを使う場合、includeパスがいっぱいあって、それにそのパスは相対だ。
だから、そこへのルートパスを変数にして、あとはそこからのパスを書けばいいようにしておきたい。

きっとそういう変数があるだろう、とプロジェクトのプロパティを見て出てきたのが、”Build Variables”と”Environment”だ。

image

どっちも似たようなものに感じるけど、何が違うんだ?


What are Eclipse's Build Variables and how do they differ from the Environment Variables? - Stack Overflow

  • Build Variablesは、Eclipseでのみアクセスできて、こんな感じで使う。
    make ${valiablesの名前}
  • Environmentは環境変数として設定するので、外部ツールからでも使える

じゃあEnvironment Variablesまで書けよー!
悩んだじゃあないか。

 

今回はeclipseにだけわかればよいので、Build Variablesにしておこう。

image

あとは「C/C++ General > Paths and Symbols」にひたすら追加していく。

image

。。。のは面倒なので、1つ追加して、Export SettingsでパスだけXML出力する。
そのファイルを見ると、<includepath>${NRF51_SDK_PATH}/components</includepath>のような出力になっているので、テキストエディタで開いて、Makefileからパスを持ってきて、うまいこと加工すればよい。

そしてそのXMLファイルをImport Settingsで読込めば完了だ。
ああ、Importすると「追加」になるので、重ねたくないものがあれば先に削除しておきたまえ。

こうしておくと、また別のプロジェクトを作ったときも、このXMLファイルをImportすればよいので楽だ。
同じファイルにBuild Variablesの設定もあれば言うことなしなのだが、すべてを求めるのは止めておこう。

 

GCCのパスも追加したいなら、そうするとよかろう。
こんなことをすると、パスが出てくる。

$ echo | arm-none-eabi-cpp -Wp,-v > gcc_inc_paths.txt 2>&1

このコマンドはARM版だけど、検索したときにはcppが使われてたから、普通のGCCでもいけるだろう。

2016/03/13

[DL]層を増やしてみよう (2) - 最終回

増やすのだ。

layerSizes = 2:50*3:2

単に、cntkファイルの*2を*3にしただけだ。
グラフを見てみると、数が増えているのがわかる。
龍の背骨みたいだな(見たことないけど)。

image

肝心の結果は・・

ErrorPrediction/Sample = 0.3946932

隠れ層が2枚の時は0.04145937だったので、よくない。
これが、層を増やしたからといって結果がよくなるわけではない、という現象か。

 

活性化関数を変えてみよう。

  • Sigmoid : 0.3946932
  • Tanh : 0.048092869
  • RectifiedLinear : 0.059701493

ほう、2枚だったときとはずいぶんと違うものだ。
あのときはSigmoidが一番よい結果だったのだが、今回は一番悪い。
TanhとRectifiedは安定している・・・のか?
そういう単純なことでは無いんだろうな。

 

では、何も考えず、隠れ層を5枚にしてみよう。
3枚くらいの時には気にならなかったが、5枚くらいになるとCNTKの実行時間が格段に違うな。。。
そして、RectifiedLinearの速さに気付くようになった。

  • Sigmoid : 0.46766169
  • Tanh : 0.053067993
  • RectifiedLinear : 0.46766169

うーん・・・。
どう考えるとよいのか。


とにかく、層を増やせばいいというわけではないのは、わかった。
そして、活性化関数によって結果がずいぶん違うのもわかった。
また、処理時間も違いがあるのがわかった。

 

こういうのって、時間がかかる=性能がよくなる、というのを期待してしまうのだが、そうならない。
そして、このパラメータだけ気にすればよい、というわけでもない。
そもそも、パラメータだけじゃ無くて、入力するデータの形式とか、隠れ層にしても単に全部つなぐだけじゃなく、戻したり、一部は伝えなくしたりとか、やり方がいろいろある。

その辺りの微調整が、CNTKのSimpleNetworkBuilderではできないから、自分でネットワークを組んでいくのかな?
でも、ミニバッチとかを見直すだけでも違いがあったから、自分で組むのは最終手段なのだろうか。

じゃあなんだ、次は自分でネットワークを組んでみる、なのか?
やったことないけど、敷居が高そうだなぁ・・・。
CNTKの、音声認識みたいな複雑そうなものでもSimpleNetworkBuilderを使っているから、ほかにいじれるパラメータがあるのかもしれん。
しれんが、よくわからんので、次回からMNISTのサンプルを見ながら作ってみましょうかね。

[DL]層を増やしてみよう (1)

CNTKのサンプルを1つだけ動かして、そもそもなんだっけ、という振り返りを行っているところ。
活性化関数については、とりあえず「やってみて一番それっぽいのを選べばいいんじゃないの?」で終わらせた。

活性化関数を使うのは、ユニットというか層というか、出力するところだ。
活性化関数の値が出力なのだけど、それを受け取る層にとってはそれが入力になる。

image

どの本にも出ていそうな図だが、結局はこのつくりが基本になっている。
実際はこの層の中にユニットがたくさん入っていて、ユニット同士がつながっているから矢印は1本では無いのだけど、いっぱい引っ張っても図としてはいいことがないので、こう表現しているのだろう。

この隠れ層がいっぱいあるのが、多層ニューラルネットワーク。
まあ、これはわかる。
では、多層ニューラルネットワークと、ディープなものの間には何があるのだろうか?

 

前に見ていた、CNTKサンプルのSimple2dは、隠れ層が2層あった。
増やしていけば何か見えてくるだろうか?
ということで、次回やってみよう。

[DL]活性化関数はどうやって選ぶのだろう? (5) - 最終回

今まで活性化関数のことを見てきたが、どう選択したらよいのかについては、探し出せていない。

ただ、検索していくと「活性関数は非線形なもの」という話がしばしば出てくる。
そういうものなのかと思ったが、『深層学習』では「近年」ということで、ReLUの関数を紹介しているのだよなあ。

あ、ReLUは0以上は線形になってるから「線形」と思っているけど、0以下は0だから、もしかして「非線形」という扱いになるのか?
たしかに、全体で見れば折れ線になっているから非線形だな。。。
そう解釈すれば、矛盾はない。

 

数学的な意味はさておき、ニューラルネットというのは生物の神経伝播を模倣するというのが元だったはず。
ニューロン間は電気的と言うよりも、ドーパミンとかの化学物質(神経伝達物質、と呼ぶそうだ)でつながっていて、その物質の多い少ないで興奮度を伝えている(とかだったような)。
花粉症の季節になると、レセプタがどうのこうのという話がよく出てくるが、あの辺だろう。神経伝達物質を受け入れるのがレセプタで、誤認して受け取ることで興奮度が上がって、クシャミみたいな形で現れるとかなんとか。

ニューラルネットはそのあたりの挙動をそれっぽくまねしたものだから、活性化関数も「これが正しい」というのは無いのかもしれんね。
かろうじて意味づけするなら、「痛みを伝える神経伝達物質の出方はこういう傾向があるから、活性化関数もこういう式だとそれに近いかも」くらいだろうか。

今回はそのくらいの解釈で済ませておいて、もうちょっと動かしてみて気になったら調べますかね。

[DL]活性化関数はどうやって選ぶのだろう? (4)

だらだらと、深層学習の活性化関数について調べるコーナー、4回目。

今日はこちら。
CiNii 論文 -  パターン分類を行なう階層形ニューラルネットワークにおける活性化関数の自動選択

残念ながら、本文は有料らしいので、読んでいない。
ただ、活性化関数の説明として「これらの空間分割特性は互いに独立」という表現が目新しい。
しかし・・・言葉の意味がわからない・・・。

単に線形とか非線形とか、そういうことを言っているのだろうか?
それだったら「互いに独立」という表現は使わないよなぁ。
独立しているというと、空間だったら「直交」のイメージがある。
あるいは「互いに素である」とか。
でも、今まで見てきた活性化関数は単にxに対するf(x)の形が違うだけで、空間が違う、という程ではないような気がする。
あー、でも「特性が互いに独立」だから、f(x)そのものが独立しているというわけじゃないから、もっと違う見方なのかな?

 

ただ、それにしたってこの論文も「活性化関数の自動選択」というくらいだから、事前に決定するようなものではない、ということなのだろうか。
それだったら、時間がかかっても数種類の活性化関数を全部試して、結果がよかったものにすればいいんじゃなかろうか。

でも、そういうことをいいたい論文ではないのだろう。
学習に時間がかかりすぎないようにすることも、たぶん大切だと思うので、そういったことが目的なのかもしれない。

こういった論文があると言うことは、もしかして活性化関数を理論的に選択する方法が今のところ見つかっていない、ということなのだろうか?

2016/03/12

nfcpyを読んでみよう(ちょっとだけ)

寒い(今は3月)ので、こたつに入ってnfcpyを読むことにした。
土曜日くらいは店じまいを早くしてもよいだろう。

さて、今のnfcpyは、0.10.2が最新。
あまり使ったことが無いのだが、libnfcよりはSONY系のR/Wをサポートしている感じがある。


今回見たいのは、RC-S380。
S370は販売中止になったと思うので、一般向けはS380だけになったのだと思う。
業務用はまだ息が長いのだろうが、まあよかろう。

おsのRC-S380だが、nfcpyではrcs380.pyという名前になっている。
というよりも、名前がそうだから、たぶんこれだろう。

image

以前はテキストエディタで見ていたが、少しPythonを勉強してIDEのPyCharmというものがあることを知った。
それで見てみれば、当時よりはもっと簡単に解析できるはずだ!

 

・・・できない。
ファイルを開いたら、赤線がいっぱい出てきた。
もう、おしまいだ・・・。

まず「import logging」で赤線。
ホバーに「No Module Named logging」と出てくるから、loggingというpythonのモジュールがないのだろう。
でも、標準にloggingはあってもおかしくなさそうだ。
うーむ。。。

image

あ、こうやるんだ。

・・・だめだ。
「pip install logging」が失敗するらしい。
どうやら、cygwinにインストールしているpythonを最初に設定したようで、そのためにpipでダウンロードまではしても、実際のパスが見つけられないようだった。

image

新しい酒は新しい革袋に、というわけではないが、場所場所にあったものを使わないとどこかで苦労するということもあるのは知っていて損はないだろう。


では、気を取り直して。

最初の方に、class Chipsetというのが出てきた。
ACKとCMDがある。
ACKはこういう感じだったのは覚えているが、CMDは・・・。
今までの名前と違うし、数値も今までと異なる。
こりゃうまくいかんはずだ、と思うのと同時に、このライブラリを作ったのって、きっと内部の人だろうという感じが伝わってくる。
今までの名前と一致しないけど、名前の付け方から逸脱していない。

ただ、R/Wのチップが変わったとしても、それはR/Wのチップとホスト間が違うだけで、無線の区間については変わるはずがない。
それに、これはR/Wへの制御をまとめるライブラリなので、今まで見慣れているRC-S956系に出す指示と、新しいチップに出す指示の意味は同じはずだ。

そこさえ意識しておけば、むしろ仕様書だけ公開されている場合よりも調査しやすいだろう。


class Chipsetは、R/Wに依存した内容が書かれているようだ。
その次にあるclass Deviceがそれらを隠蔽しているのか?

Chipset.in_set_rfを使っているものを検索すると、Device.sense_ttaがあった。
sense_ttaで検索したが、これから先はなさそうだった。。。
ttaだけでなく、ttb, ttfもあったからTag Typeの略なのだろう。
じゃあ、ttaで検索すれば何か出てくる・・・来ない。
device.pyにclass Deviceがあり、そこにsense_ttaがあったから、これがインターフェースクラスみたいなものなのだろう。
clfの_init_pyで「self.device.sense_tta(target)」としているから、たぶんこれなのだろう。
なお、clfは”ContactLess Frontend”の略だ。

読めばわかりそうな感じはするけど、必要性が今のところないので食指が動かないな。
まあ、そんなことをいえば、そもそもNFC R/Wのことを調べるなんてことをなんでやったのかって聞かれそうなんだが・・・。

それは、勢いだな、うん。

[DL]活性化関数はどうやって選ぶのだろう? (3)

だらだらと、深層学習の活性化関数について調べるコーナー、3回目。

 

今日はこちら。
アーキテクチャ (多層パーセプトロン) - IBM Knowledge Center

パーセプトロンの説明だけど、まあよかろう。
ここでは「隠れ層」と「出力層」で活性化関数の説明項目が違っているのが興味深い。

隠れ層では、

  • 双曲線正接
  • シグモイド

出力層では、

  • 同一
  • Softmax
  • 双曲線正接
  • シグモイド

となっている。

今まで(といっても過去2回しかないが)見てきた活性化関数は、主に隠れ層の話だったんじゃないかと思っている。
出力層は最後のところで、私から見ると「結果」みたいなものだろう。
だいたいの出力結果はクラス分けして「このクラスに属する確率はこのくらい」みたいなものだと思っている。
だから、Softmax関数と思い込んでいたのだが、そう限定してしまうこともないということか。

 

で、そもそもこの章で説明している対象のSPSSってなんじゃろう、と調べたところ、IBMの予測分析ソリューションのようだ。
IBM - SPSS ソフトウェア – Japan
さっきのドキュメントも2011年更新で、バージョンも20.0.0とかだったから、かなり更新されているのだろう(いまはV23なのかな)。

機械学習というと、こういうビッグデータというか、大量の意味があるんだかどうだかわからないデータから何か結果を引っ張り出す、というのが得意そうな気がする。
得意というか、人間だと「あー、もうわけわからん!」と投げ出すところを、コンピュータだから取りあえず何か出力だけはするから、人間としてはちょっとうれしいのだろう。

でも、今のところの機械学習というか深層学習の分野は「分類」方面で伸びているような印象を受けている。
まあよくある入門が「画像を入力して推測してくれる」だからかもしれんが。
なので、この分類する出力の選択肢自体を誰がどうやって選ぶのかも重要じゃなかろうか。
『深層学習』で音声認識のところに、音の初めから終わりまでの状態変数をあらかじめ持っておくのか、それともそこも学習で決めてもらうのか、という2つの手法があったけど、あれに似たものを感じる。
出力選択肢を人間が決めるのであれば、その内容自体が将来を狭めているかもしれないし、学習によって決めるのであれば、その決めた内容がふさわしいかどうかを誰が判定するんだろう、という問題だ。
イヌの分類をするようにつくったネットワークに、ネコの画像を突っ込んで「このネコはチワワと認識された!」っていうようなことになってしまわんだろうか。

まあ、そういうのはみんな考えると思うから、調べていけば傾向が見えてくるかもしれんね。

2016/03/09

[DL]活性化関数はどうやって選ぶのだろう? (2)

だらだらと、深層学習の活性化関数について調べるコーナー、2回目。

今日はこちら。
ニューラルネットワーク — opencv 2.2 (r4295) documentation

OpenCVに?
知らなかったけど、OpenCVにもMLというクラスなのかな、そこにニューラルネットワークが実装されているそうだ。
MLPで、多層パーセプトロンと書かれているので、MLクラスは「Machine Learning」かと思ったけど「Multi Layer」なのかもしれない。
いや、その上の章がMLLで「機械学習ライブラリ」になってるから、Machine Learningでよいのだろう。

CvANN_MLP::createに活性化関数を引数で選択できるようで、IDENTITY、SIGMOID_SYM、GAUSSIANのいずれかとのこと。

IDENTITYは「恒等関数」で、y=xみたいな式だ。これは『深層学習』では「線形写像」とか「恒等写像」などと呼ばれている。
もう記憶にはないけど、回帰問題のためのネットワークで使うらしい。

SIGMOID_SYMはおなじみのシグモイド関数だろう。
「_SYM」は、対称性を意味している。図を見ると、原点に対して点対称なのだな。
『深層学習』に出ているロジスティックシグモイド関数は0以上のグラフで、(0, 0.5)が点対称の中心になっている。
対称性が何か意味を持っているのだろうか?

GAUSSIANはガウス関数。
「完全にはサポートされていない」と一言書かれているだけだ。
計算を単純にするだけだと思ったのだけど「完全には」というのはなんだろう。

 

OpenCVで活性化関数?というので注目したのだけど、深層学習の1つ前の世代で行われていたニューラルネットワークのような感触だ。
もしかしたら、活性化関数の選び方も、以前と最近で変わってきている、ということがあるかもしれない。無いかもしれない。

ちょっと気にしておこう。

2016/03/08

[DL]活性化関数はどうやって選ぶのだろう? (1)

CNTKでもそうだが、活性化関数はいくつかから選択することが多い。
じゃあ、どの活性化関数がよいのか?
なにを基準に選べばよいのだろう。

という疑問があるので、調べてみよう。
すぐにわかるわけでもないので、検索してあちこち見ていこう。


今日はこちら。

ニューラルネットワークが任意の関数を表現できることの視覚的証明
直接の解説ではないのだが、内容が面白かったのでリンクを載せる。
学習データから、ほどほどにそれらしい結果を出せるニューラルネットワークを構築できると言うことは、何だかわからない結果から近似式を導き出せるのと同じだ、という話。
何か、FFTとかと似てますな。
「画像をゴッホ風にする」みたいなのもあったけど、突き詰めればそういう意味なんだ、と感心したのでした。

シグモイド関数についても書かれていますが、普遍性とか、そういう話のようです。
うぅ、難しい。。
さらっとそこだけ読んだら、シグモイド関数を合計してもどういう値になるか想像しにくいけど、ステップ関数だったらわかりやすいよね、と言ってるように思った。
思うというか、そう書いてあるところだけ読んだだけ。。。
ステップ関数というのは、たぶんある値以上は入力と同じ値になってる関数のことじゃなかろうか。
掛ける値がある値までは0、ある値から1だからステップ関数なのだと思う。

下の方は・・・やはり理解が追いつかなかった。
いいのだ、それで。
また理解できるようになったら、戻ってくればいい。

2016/03/06

久しぶりにArduino Unoを動かしたが、いろいろ忘れている

忘れているね。

https://sites.google.com/site/hiro99ma/nfc/experiment/arduino-nfc/rc-s620-s-library

 

接続

image

Arduino Unoの画像はこちらからもらった
https://www.arduino.cc/en/Tutorial/EEPROMRead

 

何度やってもうまくPCから焼けなかったのだが、UARTが共通になっているから、RC-S620/Sと一度外さないといかんのだった。

 

サンプルアプリでは、500msec周期でポーリングしているのだが、期待としては対象カードを検知するとボード上のLEDが点灯したままになってほしいのだ。
しかし、点滅してしまう。
たぶんだが、周期が短すぎるのだ。
それか、明示的にRFをOFFにするとか、そんな対応がいる気がしている。
PC/SCでやろうとしたときも、うまくいかなくて2秒周期くらいに変更したのだ。

[ai]『深層学習』の8章に挫折してCNTKを試す (8) - 最終回

cntkファイルのパラメータを変更して、比較してみよう。
比較する値は、ErrorPrediction/Sampleだ。

layerTypes

  • Sigmoid
    • 0.04145937
  • Tanh
    • 0.049751244
  • RectifiedLinear
    • 0.063018242

何回かやると結果が多少違うのかと思ったが、そうでもないようだ。
乱数的なものがあまりないのか?

ともかく、Sigmoidが一番結果がよいようだ。
サンプル数が603個なので、Sigmoidは25、Tanhは30、RectifiedLinearは38間違った分類を行ったということでよいのかな。
トレーニングデータは10000。
多いのか少ないのかわからん。

 

layerSizes

では、Sigmoidのまま、中間層を増やしてみよう。

  • 2 hidden
    • 0.04145937
  • 1 hidden
    • 0.04145937
  • 3 hidden
    • 0.3946932
  • 5 hidden
    • 0.46766169

おっ、と思ったが、桁が1つ上がってる。
確か、多層にすると発散するとか何とかってのが以前の問題点だったはずだから、増やせばいいというものでも無いのだろう。

 

minibatchSize

次はなんだ?
ミニバッチのサイズとかか。

  • 25
    • 0.04145937
  • 10
    • 0.04145937
  • 40
    • 0.036484245
  • 50
    • 0.039800995

75にしたら、SymFromAddr errorが発生してしまった。
WindowsのくせにUTF-8出力かよ・・・。

ミニバッチのサイズは、特に決め方が無いらしい。
大きいと確率的勾配降下法の良さが損なわれるらしい。

 

learningRatesPerMB

ミニバッチ当たりの学習比率か。

  • 0.5:0.2*20:0.1
    • 0.04145937
  • 0.3:0.2*20:0.1
    • 0.044776119
  • 0.8:0.2*20:0.1
    • 0.03814262
  • 0.9:0.2*20:0.1
    • 0.03814262
  • 0.5:0.5*20:0.1
    • 0.04145937
  • 0.5:0.1*20:0.1
    • 0.039800995
  • 0.5:0.2*20:0.2
    • 0.04145937
  • 0.5:0.2*20:0.5
    • 0.04145937

適当にやってみたが、そもそも値の見方がわからん。
ドキュメントには「比率*ecpoch : 残り」とあるけど、コロンが2つあるし。

 

じゃあ、ここまでで成績がよかった値を全部突っ込むと、よりよい結果になるのか?

  • Sigmoid(変更無し)
    layerSizes=2:50*2:2(変更無し)
    minibatchSize=40
    learningRatesPerMB=0.8:0.2*20:0.1
    • 0.03814262

そういうわけでもない。

 

そもそも、こういうパラメータをあれこれ考えるのがめんどくさいから機械学習させてるんじゃないのか?という気になってきた。
もうちょっと機械的にパラメータが決められないと、つらいぞ。

 

そういうのが、最近の研究で定型化してきたというところなのだろうか。
今回で挫折シリーズを終えて、使い方じゃないことも調べていこう。

[ai]『深層学習』の8章に挫折してCNTKを試す (7)

CNTKの2016/02/08版バイナリがリリースされていた。
https://github.com/Microsoft/CNTK/releases

とりあえずGPU版をダウンロードしておけば、あとは勝手に選択してくれるだろう、ということでWindows-64bit-GPU.zipを選んだ。
1bit-SGDはよくわからんので、やめておいた。高速になるとかじゃなかろうかね(てきとう)。


昨日試したグラフ出力だが、こちらでも同じ「??」だった。
残念。

ConfigもDataも同じものだが、ログを比較すると違いが多い。
たとえば、pass 1のログはこうなっていた。

[前]Validating for node CrossEntropyWithSoftmax. 20 nodes to process in pass 1.
[今]Validating network. 25 nodes to process in pass 1.

意味はわかってないけど、20と25と数字が変わってるから、何か変わったんだろう。
ただ、一番最後のErrorPrediction/Sampleは0.04145937と同じだったから、本質が変わったわけではないのだろう。


さて、次に私がやってわかりそうなことは何か・・・。
よくわからんグラフではあるが、これの元になるのはSimple.cntkしかないはず。
なので、Simple.cntkとグラフの対応をしていけば、何か見えてくるんじゃなかろうか。
第2回でも見たのだが、もう少し詳しく見ていこう。

 

ネットワークの具体的な形はこのファイルになさそうなので、SimpleNetworkBuilderが持ってるんじゃなかろうか。
「形」と私が思っているのは、何とか層、みたいなものの名前が処理する順番につながっているような何かだ。
予想では、SimpleNetworkBuilderが提供している「形」があって、そのパラメータだけがこのファイルに書かれている、なのだが。
たとえば、TutorialのPDFにある、こんな図があって、

image

「この変数は、図のこれと対応してます」みたいな説明を期待しているのだよ、私は。
せめて、GraphVizの出力も、こんな図の出方だったらわかったかもしれないのになぁ。

あ、でも一番下の

image

は、

image

と対応しているように見えないだろうか?
InputValueがMVNormalizedFeaturesノードに集まっているところが上の「X:Input」で、W0のLearnableParmeterが上の「W(1):Weight」だ。

その上の層の

image

は、

image

だ。「Times」「B」「Plus」などという名前も一致している。

そうやって対応づけていくと、こんな感じになるのかな。

image

理論的なところはわかっていないが、T→P→Sでワンセットのようだ。
SがOutputにならないところは、隠れ層(Hidden Layer)。

Simple.cntkのコメントには「2 input, 2 50-element hidden, 2 output」と書かれている。
「2 input」は、SimpleDataTrain.txtの(x, y)の2次元?
「2 output」は、ラベルの数だろうか。
hiddenも2つなのだけど、P→Sの(1)と(2)の2つなのか、(2)と(3)の2つなのか・・・PDFのOne Hidden Layerにならうなら、(1)と(2)がhiddenだ。

なので、Inputノードにウェイトを乗算するTimesノードと、Timesノードにバイアスを加算するPlusノード、Plusノードにシグモイド関数を当てはめて次のInputノードとなるSigmoidノード、これの繰り返しがSimpleNetworkBuilderでできるネットワークだと思う。

 

ここまで読んでて「シグモイドってなんだっけ?」となってしまった。
『深層学習』の2.2章にあるが、活性化関数・・・なのだけど、活性化関数ってのもよくわからないな。
掛けたり足したりを繰り返していくと値が発散するので、それを正規化しようとしているのだとは思う。
本に書かれている式でも、0~1.0とか、-1.0~+1.0とか、そういう範囲になっている。
ただ、最近はシグモイド関数に代わって正規化線形関数という、0以下は0、0以上はy=xという関数の話も書かれている。
まあ、細かいことは今後の課題だ。

SimpleNetworkBuilderで選択できる活性化関数は、

  • Sigmoid
  • Tanh
  • RectifiedLinear

の3種類。
Sigmoidが0~1.0の範囲で、Tanhは-1.0~+1.0、RectifiedLinearがさっきの正規化線形関数だ。

[ai]『深層学習』の8章に挫折してCNTKを試す (6)

CNTKだろうとCaffeだろうと、あるいは別のフレームワークを使ったとしても、同じインプットに対しては同じアウトプットが出ないといけないはずだ。
乱数要素があるとしても、それでも大きく違ってはいけないだろう。

なので、大切なのはインプットだ。
DeepLearningはニューラルネットの構築式(というのか?)がインプットになる。
もちろん学習データもインプットで大切なのだけど、データはDeepLearning以外でも使えるけど、DeepLearningするんだったらニューラルネットの構築がいるのだ。

で、Caffeにはニューラルネットのグラフを出してくれる機能があった。
きっと、CNTKにもあるはずだと思い「CNTK graphviz」で検索した。
GraphVizは、Doxygenなどでも使われているのだが、汎用のグラフ出力ツールだ(たぶん)。
「GraphViz」なのに、なぜかコマンド名が「dot」なので、ちょっと悩むのだがね。

 

そして、あった。
https://github.com/Microsoft/CNTK/wiki/Plot-command

あまり読まずに試したが、たぶん、たぶんだが、

  • modelPathにモデルのファイルパス
  • outputdotFileにGraphViz用のファイル名(CNTKが作る)
  • outputFileに出力する画像ファイル名
  • renderCmdに実行するコマンド

を書いて、configファイルのcommandに追加すると実行してくれそうだ。
Simple2dで試すと、こういうのが出てきた。

image

う、うーん・・・
下から上に矢印が向かっているから、下がインプットなのかな。
WはWeight?、BはBias?、Hって??

それに、なんで「?」がこんなに多いのだろう。
日本語のパスなどは入れていないから文字化けではないと思うのだけど、これではさっぱりわからん。
dotファイルに「?」が入っているから、CNTKが出力しているはず。

 

Windowsで動くからCNTKで勉強するか、と気楽に考えていたが、初心者にはつらいのかもしれん。

2016/03/05

[ai]『深層学習』の8章に挫折してCNTKを試す (5)

前回・・・もう1ヶ月くらい前だが、ログを出そうとしたがcurrentDirectoryのパスになってしまった、というところで終わっていた。

悔しいので、ちゃんとログのパスを指定したい。

 

cntk configFile=Config/Simple.config currentDirectory=Data stderr="%CD%/log/"

こうすると、作ったlogディレクトリの中にファイルができていた。
configFileはcurrentDirectoryの影響を受けないというのが、釈然としない。

それに、できたファイル名は「_Simple_Demo_Train_Simple_Demo_Test.log」だ。
そう、プレフィクスをstderrで付ける前提のような名前だ。

このファイル名は、commandで指定する「トレーニング」と「テスト」の名前を連結させただけのようだ。
じゃあ、もうファイル名に付加させたいような要素が思いつかないな・・・。

実行日時を付けようかと思ったが、Windowsのバッチファイルで%DATE%や%TIME%を加工することしかできなさそうで、国が違ったりするときれいにできそうな気がしない。
Linuxだともうちょっと楽なのに。。。

じゃあ、cygwinでやればいいやん、と`pwd`など使って指定したが、ファイルがないとか言われて・・・。

どうやってもうまくいかないので、そのうち私は考えるのをやめた。

[c/c++]Arduino Uno版でcstdlibなどがincludeできない

以前作っていた、Arduino版のNFCアクセスライブラリが動かない、というコメントをいただいた。
動かないというか、cstringやcstdlibのincludeができないらしい。
はっはっは、そんなばかn・・・できない!
なんでー?

 

今使っているのは、Arduino 1.6.7のWindows版。
実は、最初ビルドできたのだ。
しかしそれは、ESP8266用の設定にしていたままだった。
これを「Arduino/Genuino Uno」にすると、できなかったのだ。

つまり、コンパイラ側の挙動らしい。


じゃあ、stdlib.hも無いのかと思うと、そうではない。
コンパイルも通る。ファイルはここだと思う。

C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include

いくつか検索したけど、C++風の「.h」がつかないファイルは置いてなさそうだ。
ふーん。

まあ、組み込みで標準ライブラリなどを期待してはいかんのだろうが、最近は普通に動くことが多いので、気が緩んでいかんね。

[win10]ネットワークがよく切れる(解決せず→よくなってきた?→結局買い替えた)

うちのノートPCはThinkPad T61と古いのだが、まだ使えているので現役でがんばっている(メインじゃないけど)。

この子をWindows10にしているのだが、WiFiがよく切断されるようになった。
切断されるというか、その状態になってExplorerを動かそうとするとWindowsが応答しなくなるところまで行ってしまう。
Ctrl+Alt+Delも反応しないけど、起動しているアプリだけは動くような状態になり、ずーーっと待ってると急に動き出す。

 

Intel 4965AGNという内蔵WiFiモジュールを使っていたのだけど、Windows10は対応してくれないようで、よくブルースクリーンになっていた。
なのでUSBのモジュールにしてAGNは機能停止させていたのだが、関係あるかも、と思って外した。
が、関係ないようだ。

ネットで検索するとけっこう出てくる。
解決できている人もいるようで、だいたいこういう対応されてた。

  • 電源の設定
  • WiFiモジュールの設定
  • NetBIOS over TCP/IPを「有効」にする
  • 「SSIDがブロードキャストされてないでも接続する」にする

省電力が影響しているパターンと、なんだかわからないけど設定が影響しているパターンの模様。
ただ、どれもうちでは変わらずでした。。。。

 

IPv6を外すとか、いつも何となく行っている設定が悪さをしているのかもしれないが、それにしてもWindowsの応答が止まるというのは行き過ぎだろう。
だから、もっと根っこの方がよくないので、インストールし直しみたいな方が良いのかもしれない。


2016/03/06

はい、またダメだった。
ちなみに「Windowsが応答しない」というときは、こういうダイアログが出る。

image

 

いつもネットワークが切れるのでそちらで検索していたが、今日はWindows10の応答がなくなる方で検索した。
すると「Superfetchサービスを止めると良かった」という人がいた(ダメだったという人もいるけど。。)。
とりあえず、止めてみよう。

 

そういえば、こういうダイアログが出るんだったら、イベントビューアに何か残ってるかもしれない、と思いついた。
これかどうかわからないけど、エラーが出ていた。

image

開始できませんというか、ファイル自体がないですな。
ドライバをアンインストールしてインストールし直すと出てくるらしいので、やることにする。
うちのは、GW-USNano2
Windows10への対応状況には載っていないな・・・。
とりあえずデバイスマネージャーから削除させて、インストールしてみた。
が、Rtlihvs.dllは出てこない。。。

そうなると、サービスの「WLAN AutoConfig」がいるのかどうか。
どうせ動かないから、止めて、イベントビューアのイベントもクリアして、また様子を見よう。


2016/03/06 22:21

まただめだった。
今回は、ブラウザ(Firefox)がくるくる回ったままになったので、コマンドプロンプトを起動。
そして、スマホでwww.yahoo.co.jpのIPアドレスを調べ、ping。
通る。
では、www.yahoo.co.jpでping。
応答が返らなくなる。

となると、DNSがらみのような気がする。
pingの作りは知らんが、引数がIPアドレスじゃなかったらDNSでIPアドレスを取得するんじゃなかろうか。
ずっとダメなら設定だろうと思うんだけど、急に止まって、数分すると復帰するから、何か起きてるのだろうという気がする。

次はもう、セキュリティソフトをアンインストールするとか、そういうのになっていくので悩むな。


[2016/03/09]

前回、DNSか?で終わっていたが、1つだけ試したものがあった。
DNSキャッシュの削除だ。

Windows でクライアント側の DNS キャッシュを無効にする方法

> ipconfig /flushdns

無効にまではしていないのだが、ここ数日調子がよい。
まだだ・・・まだ気を許してはいかんと思うのだが、普通に動くのは素直にうれしい。

Windows10で気になっているのは、この問題とExplorerのコンテキストメニューフォント、それと非アクティブなウィンドウがわかりづらいというくらいなので、残りをあきらめれば移行してよいかもしれない。

 

ちなみに、Explorerのコンテキストメニューフォントは、こんなの。

image

こっちはFirefoxで表示させたコンテキストメニュー。

image

微妙に、Explorerの方はぼやっとしている。
格好がよいぼやっとした感じならよいけど、単に見づらいだけなのだ。
フォントを変更するツールを試したけど、Explorerだけは変わらないのだ。

 

非アクティブウィンドウがわかりづらいのは、アプリ次第。
Excel2013はわかりづらい。

これはExplorerアクティブ、Excel非アクティブ。

image

これはExplorer非アクティブ、Excelアクティブ。

image

Explorerはわかりやすいが、Excelはフォントの色しか変わらないし、しかも微妙だ。

ハイコントラストにするとわかりやすいのだが、犠牲が大きすぎる。。。

image image

ただ、設定でここまで変えられると言うことは、まだ可能性はあるのかもしれない。


[2016/05/04]

あれから2ヶ月。

実は、最後の記事を書いてから、また何度か切断される現象が発生していた。
これはもう、セキュリティ関係の設定を変更するしかないと思い、以下を行った。

  • ウイルス対策ソフトを変更する
  • ファイアウォール設定をWindows10デフォルトに任せる

ウイルス対策ソフトは、なんとなく変更した。
あまり疑っていないのだが、たまには変えてみるか、程度のもの。

疑っていたのは、ファイアウォール設定。
こういう陰湿な(?)現象は、ファイアウォール設定でどれか必要な通信を遮断することで、そのプロセスが正しく動かないために発生する、ということがよくあるからだ。

そして2ヶ月くらい様子を見ているが、順調だ。

 

さて、そろそろファイアウォールのアプリを戻して、また遮断させていこうと思う。

http://www.sphinx-soft.com/Vista/order.html
これの、Free版を使っていたのだ。
私がすぐ遮断したがるタイプなので、そのせいだったんじゃないか、という推測だ。
ストアアプリを使うことがほとんどないので遮断していたのだが、それかなぁ。
なので、今回はストアアプリの遮断はなるべくしないようにして、また報告しよう。


2016/09/25

結局、あれから現象が起きたので、あきらめてWindows10に対応したUSBドングルを買い直した。
型番が本体に書いていないからわからないのだけど、見た目はこれ。
http://buffalo.jp/product/wireless-lan/client/wli-uc-gnm2/

ちゃんとWindows10対応というところを確認して買ってきた。
メーカー品で、Window10対応リストがあって、その中に載っていない機種だったら疑わしいということかもしれない。

つなぎ替えてからは、嘘のように何事もなく動いている。
外したGW-USNano2もRaspberry Piで使っているので、うまく収まった。
そういう時代なんだ、ということで終わらせよう。

2016/03/02

[excel2013]図形のかっこの初期状態がかっこわるい

まさかの連続Excelネタ+ダジャレタイトル・・・。

資料を作るとき、オートシェープの括弧をよく使う。

image

描くと、こんなだ。

image

えー、もうちょっと、なんかねぇ。。。

image

image

せめて、こんな感じにしてほしいのだ、デフォルトで。
あんまりカクカクしていると、本などで見かける形と違うからか、どうしても変更したくなってくる。
「規定の図形」にしても保持されるわけじゃないので、毎回やってるのだ。

 

昔はもうちょっと格好がよかった気がするのだが、美化された記憶なのだろうか?
最近は「Excelで書くのはやめよー!」というのもよく見るのだけど、あれこれ考えているときには手書きしたり図を描いたりしたいのよねぇ。

[excel2013]小さい図形の自由回転をマウスでやりたかったが、なさそうだ

もう時代はExcel2016とかになりつつあるのかもしれんが、うちにあるのは2013だ。

 

昔のExcelには、図形の自由回転(という名称だったかどうかも忘れたが)する図形選択があった。
アイコンで言えば、マウスカーソルのアイコンに緑の丸がついていたような記憶がある。
Excel2013だと、小さいオートシェープなどの図形では回転するハンドルが表示されないので、表示される倍率まで上げないといけない。
この倍率が、図形の大きさによって違うので、めんどくさい。
そして、回転するためだけに倍率を上げて、また元に戻す、という動作が腹立たしい。

なので、昔あった自由回転するアイコンをクイックアクセスツールバーに置いておくと便利だろう、と探していたのだが、5分くらい眺めてもそれっぽいものがわからなかった。
あれって、検索機能が欲しいです・・・。

ネットで検索すると、

  • 拡大させる
  • 書式タブでやる
  • Alt+左右矢印で回転できる

が見つかった。
一番近いのは3番目か。
でも、忘れそうな気がする。人によっては画面が回転したりしないかい?

 

昔のメニューとの対応表があったけど・・・やっぱり拡大させてアンカーを表示させる方式か。

リファレンス: Excel 2003 のコマンドに対応する Excel 2007 のコマンド - Excel

image