sympy でニューラルネットワークの重みの更新に使用する式を計算グラフにしてみる

1. はじめに sympy(https://www.sympy.org/en/index.html) を使用し、ニューラルネットワークの重みの更新に使用する式を計算グラフにしてみます。具体的には、 sympy を使って、損失関数の勾配の計算を計算グラフとして表し、それを graphviz で画像に出力…

Numpy 入門 (機械学習勉強会 in 新潟 2019/03/23)

Numpy 入門 */--> /* @licstart The following is the entire license notice for the JavaScript code in this tag. Copyright (C) 2012-2018 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it …

SciPy Japan 2019 に参加します

SciPy Japan 2019 に参加します。www.scipyjapan2019.scipy.org開催は4/23, 4/24の二日間、場所は東京。チュートリアル、トーク、ポスター発表が行われるようです。チュートリアルも二日間に渡って行われるようです。英語のリスニングができずに、ほとんど理…

Wikipediaの文書を使って文の長さの平均を求める

Wikipediaの文書を使って文の長さの平均値と最頻値を求めました。機械学習勉強会 in 新潟で発表した内容です。Wikipedia の約60億文字以上のXMLファイルから、独自に定義した文を抜き出し、その文に対して統計量を求めました。使用言語はいつも通りPythonで…

Pythonで2次元データ作成ーポリゴンに収まる点の集合

前回の続きです。今回は、前回に引き続き、ポリゴンに収まる点の集合を作成します。アルゴリズムは簡単で、ランダムに点を打ち、それがポリゴンの内側であれば点を残す、ポリゴンの外側であれば点を消すを繰り返すだけです。「ポリゴンの内側か?」を判定す…

Pythonで2次元データ作成ー三角形に収まる点の集合

前回の続きです。今回は、前回に引き続き、Pythonで三角形に収まる点の集合を作成します。アルゴリズムは簡単で、ランダムに点を打ち、それが三角形の内側であれば点を残す、三角形の外側であれば点を消すを繰り返すだけです。「三角形の内側か?」を判定す…

Pythonで2次元データ作成ー四角形に収まる点の集合

Pythonで四角形に収まる点の集合を作成します。アルゴリズムは簡単で、ランダムに点を打ち、それが四角形の内側であれば点を残す、四角形の外側であれば点を消すを繰り返すだけです。「四角形の内側か?」を判定する関数を作成し、その関数に様々な点を与え…

numpyの2次元配列の非ゼロ領域を囲む四角形の情報を取得する方法について理解する

本記事は、Stackoverflowにに記載されているnumpyの2次元配列の非ゼロ領域を囲む四角形の情報を取得する方法について理解を深めるための記事です。 1. 目次 1. 目次 2. numpyの2次元配列の非ゼロ領域を囲む四角形の情報を取得する方法 3. 解説 4. 注意点 2…

nvprofコマンド と NVIDIA Visual Profiler(GUIアプリ) を使って GPUのプロファイリングを行い、tf.nn.conv2d の計算時間を計測してみる

以前の記事で tf.nn.conv2d を複数GPUでやったら遅かったという記事を書いたのですが、「オーバーヘッドも含めて計測しているため遅いだろう」というご指摘があったため、もう一度検証してみました。最近参加している勉強会の主催者の方から、NVIDIA Visual …

Pythonでドーナッツの形を描画する

いきなりですがPythonでドーナッツの形を描画します。まず、頭の中でその形をイメージします。次にそれを数式で表し、Python 3 で実装します。最後に描画されたものをみてみます。 1. 頭の中でドーナツの形をイメージする ドーナッツの形をイメージします。…

TensorFlowで複数GPUで2次元畳み込みやってみる(tf.nn.conv2d with multiple GPUs)

1. やったこと TensorFlow の tf.nn.conv2d関数 を GCE 上でK80とV100のGPUを1個〜8個を用いて、データ並列で実行。処理速度の検証を行った。 2. わかったこと 以下のコードを試した結果、CPUのほうが3倍早く、期待はずれの結果となってしまった。こうすれ…

数値をエクセルの列を表すアルファベットに変換する関数

前回の記事で、数値をエクセルの列を表すアルファベットに変換するプログラムを自作しましたが、stackoverflow でもっと良い方法を見つけたため紹介いたします。そのコードを参考に関数を作成しました。このような問題は、みんながよく考えそうなことですか…

エクセルの列を表すアルファベットを数値に、または数値をエクセルの列を表すアルファベットに変換する話

以前の記事で、エクセルの列を表すアルファベットを数値に変換するプログラムを書いたのですが、今回は、その逆変換つまり、数値をエクセルの列を表すアルファベットに変換してみようと思います。———————— ※2018/11/15追記 数値をエクセルの列を表すアルファ…

少数で表される数値の出現頻度を数えてヒストグラムを作成したいAさんの話(問題)

題名の通りの問題です。問題は以下の通りです。汚文字ですいません。問題文では少数の最小値と最大値が-2.0と2.0で、それを8つの領域に均等に分割していますが、これは一例にしかすぎません。これら(最小値、最大値、分割数)の数字が変化しても機能するよう…

指数移動平均(ema)について考察する

指数移動平均(Exponential Moving Average 以下 ema)の仕組みや動作がよくわからないので、計算式をPythonで実装し、関数に適用してみます。 emaの計算式は以下のWikipediaのページを参考にしました。https://en.wikipedia.org/wiki/Moving_average#Exponent…

TensorFlow で「y=x*(x-1)*(x-2)」の極小値を求める

TensorFlow を利用し関数の局所的に凹になってる箇所ー Local Minima ーすなわち数学的にいう極小値を求めてみようと思います。今回、対象とする関数は 「y = x*(x-1)*(x-2)」です。グラフにすると以下のようになると思います。汚くてすいません。ちなみにこ…

ニューラルネットワークで"Z = x*x + y*y"を学習させてみた

いきなりですが、関数 "Z=x*x + y*y" の様な曲面をニューラルネットワークで学習させてみます。ディープラーニングの話です。目的:多層ニューラルネットワークが色々な関数を近似できるとは聞いていたが、それが本当かどうか確かめる。多層ニューラルネット…

numpy.sumのaxisを指定したときの挙動が覚えられないのでイメージ化してみた

numpyの関数にはnumpy.sumやnumpy.anyなど引数にaxisを指定できる場合があるのだけど、いまいちイメージがつかめなかったのでnp.sumのaxis指定したときの挙動のイメージをお絵描きしました。2次元の行列に限定した話です。以下の図のように「axis=0のときは…

エクセルのアルファベットの列番号を数値に変換するPythonプログラム

昼休みの暇つぶしに書いたコードを載せます。 エクセルのアルファベットの列番号を数値に変換する簡単なPythonプログラムになります。例: "A"は1 "Z"は26 "AA"は27アルファベットを数値に変換し、各桁の重みをかけて右から左へ順に足しこんで行くプログラム…

2つの線の交点を表す数式を作ってpython matplotlibで検証

XY座標に点A1(Xa1, Ya1), A2(Xa2, Ya2), B1(Xb1, Yb1), B2(Xb2, Yb2)があったとして、線A1A2 と 線B1B2の交点を数学的に求め、数式があってるか確かめようという話。以下のように数学的に求めます。 まず交点の式をだします。 次に上画像の一番下に書いてあ…

無人島で直角三角形の角度をかなりアバウト(誤差20%以内)に計りたい時に使えるかもしれない簡単な計算式

おそらく、無人島の先生がこの直角三角形のアバウトな角度出しなさいという問題に答える生徒しか使わない気がしますが一応書いておきます。無人島で直角三角形ABCの角度をアバウトに図りたい時は角度 = 60 * 高さ / 底辺を計算します。計算した角度から…

二値画像にk-meansを適用し、細線化?してみる

前回の続きです。今度は二値画像にk-meansを適用し、細線化?してみます。 二値画像においてk-meansが細線化や情報削減に利用できるのではないかと思えるような結果になりました。今回は、scipyのkmeans2を使用し、代表点の初期配置を領域内に収めることで、…

抽出した輪郭を間引いてみる

昨日はオブジェクトから輪郭を抽出する処理を書きました。今日は、 輪郭を等間隔に間引いたものの形状がどうなるか見てみます。前処理としてオリジナルデータのオブジェクト領域が小さかったのでscipyのzoom関数で2倍に拡大してから処理に入っています。あ…

輪郭抽出

いきなりですが、輪郭抽出をPythonで実装しました。 ここでいう輪郭抽出とは画像にフィルタを適用する話ではありません。二値画像のオブジェクトの輪郭を綺麗に抽出したいのです。すでに、このアルゴリズムがあるかは知りませんが、アルゴリズムのイメージだ…

備忘録、Raspberry Piにシリアル接続する方法

1年くらいに購入したラズベリーパイ、Macでシリアル接続してみた。 結果、Arduino書き込みのために購入した、USB-シリアル変換ケーブルでシリアル接続できた。 配線は以下のとおり。 ※ラズパイが3.3VなのでUSB-シリアル変換ケーブルも3.3Vに合わせる。この…

再帰を走らせた時の道筋

再帰を走らせた時の道筋が知りたくなったため、考察してみました。 具体的には、以下のPythonコードで表される再帰を考えます。 # -*- coding: utf-8 -*- def recShow(n): if n == 5: return else: recShow(n + 1) recShow(n + 1) recShow(1) これが、どのよ…

絶対解けるマインスイーパのようなパズル「宝探し」の6x6の問題を作成した

表題の通り、「宝探し」の6x6をつくりました。頭の体操にどうぞ。 2 2 4 2 2 3 4 2 3 3 2 2 1 2 3 2 3 3 1 2 3 3 2 1 2 1 2 2 2 3 3 3 2 2 3 3 1 1 2 1 1 2 1 2 2 3 2 2 2 2 3 2 2 2 3 3 2 3 3 4 2 2 2 1 2 2 3 2 2 3 3 4 2 3 2 2 3 2 2 2 4 4 4 2 2 3 4 4 2…

必ず解けるマインスイーパのようなパズル「宝探し」の5x5の問題

絶対解けるマインスイーパのようなパズル「宝探し」の5x5の問題です。暇つぶしにどうぞ。 1 1 2 3 1 1 2 1 2 2 2 1 1 3 1 2 2 3 2 1 1 1 2 1 3 2 2 1 1 1 2 2 3 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 3 1 1 2 1 2 3 2 2 1 2 1 1 2 2 1 1 2 2 1 1 1 2 1…

必ず解けるマインスイーパのようなパズル「宝探し」の4x4の問題ができた

「宝探し」パズルの4x4ができたので問題提供します(10問)。みなさんとけますか。ルールは「マスの数字の周りにその数字の数だけ宝がある、宝のある場所を◯で埋めなさい」です。言いかえると絶対解けるマインスイーパです。それだけですが、以外に面白いと思…

必ず解けるマインスイーパのようなパズル「宝探し」について考える

「頭がよくなる算数パズル」という本に、「宝探し」というパズルがのっていました。このパズルは解き方はマインスイーパのような感じなのですが、マインスイーパは絶対解けるとは限りませんが、このパズルは絶対解けるらしいです。早速購入してやってみたと…