C#でCNTK - 起動時のDLL読み込みエラー対応2018年11月01日 19:39

CNTKでMLに挑戦。学習用のデータの準備に目処がついたので、モデルの学習と検証のアプリの構築に取りかかる。いまさら、Pythonに取り組むのもなんなので、C#で頑張ってみる。こちらのライブラリも順次拡張中


UWP向けには、C++のライブラリしか用意されていないので、WPFによるデスクトップアプリで実装。nugetからパッケージを導入。計算用のデバイスを確認するコードで動作確認。すると、DLLの読込で例外発生。

起動時の例外のログ

C++のEEMessageExceptionが発生し、System.TypeInitializationExceptionがスローされている。

調べてみると、CNTKのライブラリはx64のみで提供されるところ、アプリをx64でビルドしないと発生するとの記事が見つかる。デフォルトの「Any CPU」でも自動判別されるはずだが、それではうまくいかないらしい。

構成マネージャ

構成マネージャを起動すると、デスクトップアプリのプラットフォームでは、「Any CPU」しか選択できない。プルダウンメニューで[<新規作成>」を選び、「x64」を追加しようとするが、うまく追加できない。

新しいプロジェクトプラットフォーム

ポイントは、「新しいソリューション プラットフォームを作成する」のチェックを外すこと。図では、後からキャプチャしたのでx86になっているが、「x64」を選択後、チェックを外して、OKを押下する。

DeviceDescriptor

ビルドして実行すると、無事に起動。ただし、アプリのサイズはかなり大きくなる。GPUの無い環境でGPUを選択したので、例外発生のメッセージを表示している。

Windowsアプリケーションパッケージプロジェクトを追加し、デスクトップブリッジに対応しておけば、GPUのあるリモート環境への配置やデバッグ実行も容易にできる。

若草大橋、新利根川、霞ヶ浦は未達2018年11月05日 19:56

天気が不安定。明け方は濃霧で、一日家作業かと思ったが、9時過ぎて持ち直す。週後半に向けて悪くなりそうなので、出掛ける。

若草大橋

若草大橋を渡る。利根川沿いの自転車道で海から69kmの地点。

ここから茨城県利根町

橋の中程で、茨城県、利根町に入る。

料金所20円

この橋は有料道路。自転車は20円。

新利根川

そのまままっすぐ進むと、新利根川を渡る橋にかかる。海に向かって左は舗装道、右は未舗装道。左を進む。

一級河川新利根川

見た感じ運河のようだが、一級河川。

直売所の先は未舗装

408号を渡ると、稲敷のJA直売所。小ぶり。その先は、未舗装道。

堂前自然公園

少しいくと、堂前自然公園。しばらく舗装道になる。

季節外れのひまわり

季節外れのひまわりの群落。

飛行機の通り道

少しいくと、成田空港に向かう飛行機の通り道。かなり低い。ひっきりなしに行き交う。

今日の猫

この付近の刈り取り後の田にも猫。

今日はここまで

この先は、霞ヶ浦に通じるが、日没までの時間を考え、今日はここまで。あと30分くらいか。横利根閘門はさらに先。折り返しは、幸田橋。

牛

復路は、下流に向かって右側。下流では、右側が舗装道。ふと、牛が目に入る。看板のチーズ工房の関係か。

天使の梯

若草大橋が近づくと、天使の梯がはっきりと。

印旛沼と雲

安食の付近で少し降られるが、印旛沼に戻ってくる。沿道では、かもの鳴き声があちこちから。音採りに来るか。上空には雄大な雲。

未達の霞ヶ浦、冬場は日が短いので、佐原あたりまで輪行しないと難しいか。

CNTKでConvolutional Neural Networkの学習2018年11月08日 20:41

CNTKでConvolutional Neural Network(CNN)を用いたモデル構築。GitHubにあるサンプルを参考に、とりあえずアプリを動かすところまで到達。データの準備を除き、50時間ほど。

CNN最初の学習結果

試走とはいえ、エラー率が7割と惨憺たる結果。データによっては、9割に達するものも。ここから、どうやって精度を上げていくか。ドキュメントを読む限り、パラメータを変えて対象のデータの性質を見極める、試行錯誤に尽きるらしい。データの数も増やしていかないと。

さて、ここから面白くなるのか、途方に暮れて飽きてしまうのか。「AI技術者」の端くれになるのもなかなか大変な予感。めざしてはいないけど。

プライバシーポリシーとサポート情報 - Subnet Designer U2018年11月09日 09:00

本アプリについて (About this app)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。
This app was unpublished at Nov. 2018.

本アプリは、IPv4のSubnetの設計において、必要なSubnetの数と1つのSubnetが収容するホスト数をもとに、最適なSubnetを求める作業を支援します。
Windows8.1用のストアアプリを、Windows10向けのUWPアプリとして移植したものです。

This app helps you design a subnet based on number of subnets and number of hosts per subnet. This Windows10 UWP app is ported from a previous Windows8.1 store app.

プライバシーポリシー (Privacy statement)

Subnet Designer U
対象アプリ:Subnet Designer U

本アプリの製作者であるThe Fourteenth Lab (第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

This app uses no Internet connection. No information of any kind, personal or otherwise, is transmitted or collected by The Fourteenth Lab.

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

If you have any questions or bug information, please fill in the comment field below or email me. The email address is printed in the left side.

あらかじめのおことわり (FAQ)

1)wildcard mask(または、inverse mask)は、Ciscoのルータでアクセスリストを設定する際などに用います。

Wildcard mask (or inverse mask) is applied to access list configuration in cisco routers.

※Ciscoのページ

プライバシーポリシーとサポート情報 - 部屋の中の水分量U2018年11月10日 09:45

本アプリについて (About this application)

※本アプリは、2018年11月、ストアでの新規配布を終了しています。

部屋の室温、湿度、容積から空気中の水分量を求めます。また、加湿する場合に必要な水分量、除湿する場合に取り除く水分量を求めます。
Windows8.1用のストアアプリ(部屋の中の水分量)を、Windows10のUWP用として若干の改良を加え移植したものです。

※部屋の中の水分量(移植元)

プライバシーポリシー(Privacy Statement)

部屋の中の水分量U
対象アプリ:部屋の中の水分量U

本アプリの製作者であるThe Fourteenth Lab(第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報(Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載のご連絡先までお願いします。

1)ver1.1.0.0では、Mobile端末でタイトル部分の背景が黒くなり文字が読めない不具合がありました。ver1.1.1.0で対応しました。(12/1/2015)

あらかじめのおことわり(FAQ)

1)飽和水蒸気圧の計算には、W. WagnerとA. Prussの近似式を用いています。計算式については、参考文献2)のサイトに掲載されたものを用いています。

2)グラフの表示には、WinRT XAML Toolkitを利用しています。

3)本アプリの「調湿に最低限必要な時間」は、部屋の湿気の出入りがないとした場合の時間です。実際には、換気に伴う出入りがありますので、時間は長くなります。

4)本アプリの「参考:計算過程」は、小数点以下6桁まで表示していますが、そこまでの精度があるわけではありません。有効数字は3~4桁です。

参考文献

1)国立天文台編、理科年表 2015年、丸善出版
 物49(411)ページ、「水の蒸気圧」、ほか

2)Kaye & Laby Online, Tables of Physical & Chemical Constants

3)卜部吉庸著、化学の新研究、三省堂
 2-3 液体の蒸気圧と沸騰、ほか

プライバシーポリシーとサポート情報 - トーンと色の見本帳2018年11月15日 09:30

本アプリについて (About this App)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。

このアプリは、Windowsアプリの色デザインの補助のために、Windowsの定義色について、PCCSのトーン、色相、明度、彩度を概算し、トーンマップ上の位置を示します。また、PCCSの色について、RGB(ARGB)値を算出し、それに近いWindowsの定義色を求めます。

更新;2018年3月
生成した色について、色のタイルをクリップボードにコピーする機能を加えました。クリップボード経由で他のペイントアプリなどで参照できます。

※PCCS;日本色研配色体系

※アプリのページ

プライバシーポリシー (Privacy Statement)

トーンと色の見本帳
対象アプリ;トーンと色の見本帳

本アプリの製作者である The Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

使い方 (Usage)

利用方法は、アプリの「このアプリについて」に記載しています。ここでは、概要を示します。

●Windows定義色の色相、明度、彩度、トーンを調べる。

Windows定義色の確認

例として、一覧の中から、定義色「Chatreuse」を選択します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。
・PCCSの色相、明度、彩度、マンセル色相の概算値を計算します。
・明度と彩度からトーンを判別します。

●PCCSサンプル色の色相、明度、彩度、トーンを確認する。

PCCSサンプル色の確認

例として、一覧の中から、「v20」(トーンvividの色相20)を選択します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。
・定義に従い、PCCSの色相、明度、彩度、トーンを表示します。
・マンセル色相の概算値を計算します。

なお、RGBで表現できる範囲を超えた場合は、RGB値の右に「!」を表示します。この場合のRGB値は、越えた部分を上限値または下限値で置き換えたものになります。

●トーンと色相から生成される色を確認する。

トーンと色相から生成した色を確認

例として、トーンの一覧から「d Dull」、色相の一覧から「4:rO 赤みのだいだい」を選択します。
ついで、「トーンと色相からマップ」ボタンを押します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。

●色相、明度、彩度を指定して、生成される色を確認する。

色相、明度、彩度からマップ

例として、色相から「20:V 青紫」、明度をスライダーを操作して70(縮尺は10倍なので実際の値は7.0)、彩度のスライダーを操作して60(縮尺は10倍なので実際の値は6.0)を指定します。
ついで、「色相、明度、彩度からマップ」ボタンを押します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。
・明度x彩度のマップ上に色を表示します。

●トーンマップを確認する。

トーンマップ

色を生成すると、トーンマップにその位置を表示します。一つ前に作成した色が、Lightの円の時計で6時の位置に表示されました。表示位置は、黄(8:Y)が12時の位置、青紫(20:V)が6時の位置で、色相順に時計回りに配置します。

●選択した色相について、等色色相面を生成する。

等色相面

例として、色相から「20:V 青紫」を選択し、メニューから「色相を選んで等色相面を生成」(パレットのアイコン)を選択します。明度、彩度を1.0刻みで表示します。外側のトーンの明度から一定以上外れた色は表示しません。PCCSでは、色相ごとに明度の分布が異なり、青紫は下の方に寄っています。逆に黄は上の方に分布します。

あらかじめのおことわり (FAQ)

1)ディスプレイを通して実際に見える色は、ディスプレイの設定により変わります。紙に印刷した色と同じになるとは限りません。

2)トーンの識別は、トーン系列を近似する曲線を生成して計算しています。理論の裏付けのある計算式ではないので、それなりにずれています。参考程度にとどめてください。

3)RGB値の各値は、0~255の値を取ります。生成する色が、この範囲を外れている場合(「!」を表記)、負の場合は0、255を越えた場合は255に丸めた上、RGB値を生成します。

4)本アプリが示す明度と彩度は、一般のペイントソフトのHLS表示における明度や彩度と異なります。お使いのペイントソフトで、表示されている明度と彩度を指定しても、同じ色にはなりません。ペイントソフトでは、コンピュータで扱いやすいように、どの彩度でも明度の幅が同じになるように補正しています。本アプリが依拠するPCCSでは、高彩度ほど、明度の幅が狭くなります。

5)Windows定義色の「Transparent」(透明)は、白色の透明度100%と表示されます。

6) 生成した色について、右クリックで情報の参照とクリップボードへの色タイルのコピーができますが、表示されるトーンと、トーンマップ上の表示位置にずれがある場合があります。これは、生成された色がWindowsの表現可能範囲を越え、近似色の場合に生じます。

参考資料 (References)

1)中田満雄,北畠耀,細野尚志、「デザインの色彩」(部分改訂版)、日本色研事業株式会社,2016

2)Microsoft, How to Converting Colors Between RGB and HLS(HBS), https://support.microsoft.com/en-us/kb/29240, 2006
※このKB29240のアルゴリズム通りの実装はしていません。

3)クリップボードにコピーする色タイルの生成には、Win2Dのパッケージを利用しています。

プライバシーポリシーとサポート情報 - からだを動かすリズム計2018年11月15日 09:30

本アプリについて (About this app)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。

本アプリは、身体を動かす際などにリズムを取るためのものです。ストレッチ運動などをする際に、リズムを崩さないようにする手助けとなることを想定しています。

一回の動作の拍数(1~4)と、目標の動作数を設定すると、図形の動きと音でリズムを取ります。たとえば、1回の動作を2拍で行い、30回を動作数に設定すると、2拍のリズムを30回の区切りで実行します。1拍の時間は、0.5~3秒の間で設定できます。

また、開始、終了、1拍の時間変更は、音声認識での操作でも行えます。音声認識には、マイクが必要です。

プライバシーポリシー (Privacy statement)

からだを動かすリズム計
対象アプリ:からだを動かすリズム計

本アプリの製作者である The Fourteenth Lab (第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

あらかじめのおことわり (FAQ)

1)音声認識は、マイクや機種の性能によって、認識具合が変わります。同じ動作にいくつか単語を用意していますので、認識しやすい単語を選んでください。

2)リング図形の表示には、WinRT XAML Toolkitを使用しています。

プライバシーポリシーとサポート情報 - Network Time U2018年11月15日 09:30

本アプリについて (About this application)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。

ネットワーク時刻を提供するサーバから時刻情報を取得し、本機の時刻とのずれを確認します。
Windows8.1用のストアアプリ(Network Time)を、Windows10のUWP用として若干の改良を加え移植したものです。

※2018年5月更新
ネットワーク時刻取得後、時刻表示の更新を続けるオプションを設けました。

This application retrieves a network time from a network time server (ntp server), and compare it to the local PC time.
This application is a 'Universal Windows app' ported from windows store app 'Network Time'.

※Network Time

※Network Time U (for Windows10, this app)

プライバシーポリシー (Privacy Statement)

Network Time U
対象アプリ: Network Time U

本アプリは、ネットワーク時刻を問い合わせるためにインターネット接続を利用します。
本アプリの製作者であるThe Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

This application uses the 'Internet connection' to retrieve a network time by the network time protocol (ntp/udp).
No other information of any kind, personal or otherwise, is transmitted or collected by The Fourteenth Lab.

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

If you have any questions or bug information, please fill in the comment field below or email me. The email address is printed in the left side.

あらかじめのおことわり (FAQ)

1)本アプリは、ネットワーク時刻を提供するサーバとの通信にUDP/IP上の通信手順(NTPプロトコル)を用いています。この通信手順は、送達確認を行わないため、通信相手が結果を返さない場合でも、エラーは表示されません。

1) This application uses the network time protocol on udp/ip which has no handshaking dialogues; therefore, no error message is printed when the server does not respond to the request.

2)平均通信時間は、往路と復路の通信時間の平均です。

2) Average communication time is the average of calling and receiving round trip delays.

3)オプションで「詳細モード」を選択する場合の表示は、NTPプロトコルの仕様書が定める以下の内容に対応します。(Japanese only)

時刻サーバの応答:leap
時刻の階層:stratum
時刻の同期間隔:poll
時刻の精度:precision
時刻の識別情報:reference id、stratumが0の場合は kiss code