edo1z blog

プログラミングなどに関するブログです

機械学習

tensorflow-gpuが遅いのは何故でしょうか?

cpuだと17秒のものが、gpuだと36秒かかります。gpuは速いのではなかったのでしょうか?原因は色々推測できますが、コードの書き方が悪いか、環境が悪いかをとりあえず切り分けたいと思います。切り分け方は、先人の実験&報告と全く同じコードを使って実験し…

TensorflowでGPUが使えてるか確認する

環境 ubuntu18.04 python3.6 tensorflow 1.13.1 tensorflow-gpu 1.13.1 GPU $ lspci | grep -i nvidia 01:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] (rev a1) 01:00.1 Audio device: NVIDIA Corporation GM204 High Defi…

NVIDIAのログイン関係がわかりづらい

非常に分かりづらくないでしょうか?googleログインしてもメールとパスワード入力画面に移動して、ユーザ名が重複してる場合は「必須です入力してください」という変な日本語になってますし、googleログインを諦めて通常ログインにしてやっとできたと思った…

BTCFXの約定データで強化学習してみる (4)

google マシーンラーニングを使ってみたいと思います。お金はかかりますが、速いし、ハイパーパラメータのいいやつを探してくれるということなので、よさそうだと思っております。強化学習については、下記記事に色々書いてあります。 cloudplatform-jp.goog…

BTCFXの約定データで強化学習してみる (3)

前回、前々回と全然ダメでしたので、先人の知恵を探しておりました。基本的に下記のアリさんの過去のつぶやきを沢山拝見しました。ありがとうございますm(. .)m またアリさんがつぶやかれていた下記論文に関しても一応ぼんやりと眺めました。 sigfinいくつか…

BTCFXの約定データで強化学習してみる (2)

下記で、Open AI Gymを使って、BTCFXの約定データをもとに強化学習するコードを一応作成しましたが、結果はボロボロでした。 blog.logicky.com 前回のコードは、テスト不十分だったので、とりあえず、実際に想定どおりに注文・約定・利確・損切等が行われる…

BTCFXの約定データで強化学習してみる

BTCFXの1日分の約定データ(1分足データ)をもとに、取引方法を学習させてみたいと思います。Open AI GymのEnvというのを自作することで、学習環境を自作することができます。 Open AI Gymが用意してくれているEnvは、env = gym.make('CartPole-v0')といっ…

強化学習 - Python3でSarsaを使って行動価値を出す

これからの強化学習という本の31頁にのってる状態遷移グラフの行動価値をSarsaを使って出してみます。ちなみにこの本の数式誤字多くないですか??Python3で書いてみます。

強化学習の勉強に良さそうなサイト一覧

OpenAI Gym Pythonではじめる強化学習 深層強化学習:ピクセルから『ポン』 – 前編 深層強化学習:ピクセルから『ポン』 – 後編 超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜解説編② 学習の流れを理解する〜 PyBrainを用いて強化学習を…

greedyアルゴリズム(貪欲法)

greedyアルゴリズムは、全部をN回試して、報酬の平均が最も高いやつを選択するというアルゴリズムです。 当たりか外れがでる機械が4個あって、どれが一番当たり率が高いか分からないのでgreedyアルゴリズムでやってみる想定にします。機械はa~dまであってそ…

手書き文字を作れるJavascriptをつくってTensorFlowで予測させてみた(2)

この前、「手書き文字を作れるJavascriptをつくってTensorFlowで予測させてみた」という投稿でブラウザ上で手書きした文字画像を、MNISTで訓練したモデルで予測してみましたが、ものすごく精度が悪かったです。今回改めて、CNNを使ってやってみたらかなり精…

TensorFlow - Local Response Normalization(LRN)(局所的応答正規化)

参考:theanoで局所コントラスト正規化(Local Contrast Normalization)を使う 正規化の方法にはいろいろあり、代表的なものを挙げると Global Contrast Normalization(GCN) Local Contrast Normalization(LCN) Local Response Normalization(LRN) ZCA whiten…

TensorFlow - tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None) value: A 4-D Tensor with shape [batch, height, width, channels] and type tf.float32. ksize: A list of ints that has length >= 4. The size of the window for each …

TensorFlow - weight decay

機械学習のweight decayは、重みの2乗ノルム(L2ノルム)を損失関数に加えること。これによって重みが大きいと損失関数の値が大きくなるので、重みが大きくなりすぎないようになる。過学習は重みが大きくなることで発生することが多いからこういうことする。…

TensorFlow - tf.add_to_collection

tf.add_to_collection(name, value)は、tf.Graph.add_to_collection(name, value)のラッパーだそうです。 引数 name: The key for the collection. The GraphKeys class contains many standard names for collections. value: The value to add to the coll…

TensorFlow - tf.train.MonitoredTrainingSession

tf.train.MonitoredTrainingSessionを確認します。 訓練をモニターするのに特化したセッションという感じでしょうか?チュートリアルのコードでは下記のような使われ方をしています。 with tf.train.MonitoredTrainingSession( checkpoint_dir=FLAGS.train_d…

TensorFlow - Readerクラスでバッチ処理

参考: TensorFlow : How To : データを読む Inputs and Readers TensorFlowチュートリアル - 畳み込みニューラルネットワーク(翻訳) tf.train.shuffle_batchというのを使う。シャッフルが不要な時は、tf.train.batchを使う。 tf.train.shuffle_batch tf.t…

TensorFlow - 学習精度を上げるために画像加工して増やす

参考:Images 上記を見ると色々な加工関数があるんですね。デコードエンコードも色々便利そうなのがあるんですね。 TensorFlowのチュートリアル「Convolutional Neural Networks」で、cifar10の画像を学習精度を上げるために画像を色々加工して増やしていま…

TensorFlow - 画像ファイルをReaderクラスで読み込む

参考:TensorFlowのReaderクラスを使ってみる こんな風にしたら単一ファイルを読み込めるらしい。 jpeg_r = tf.read_file(fname) image = tf.image.decode_jpeg(jpeg_r, channels=3) コード import tensorflow as tf import numpy as np from PIL import Ima…

TensorFlow - Readerクラスでデータを読み込んでみる

参考:TensorFlow : How To : データを読む ファイルからデータを読む場合の処理の流れ ・ファイルパスのリストを、tf.train.string_input_producer 関数に渡す(shuffle=Trueにしたらepochでファイル名をシャッフルする) ・読み込むデータに合わせてreader…

TensorFlow - tf.strided_slice関数を調べる

tf.strided_sliceを調べます。TensorFlowのGithubにのってる説明ページはこれです。 tf.strided_slice(input_, begin, end, strides=None, begin_mask=0, end_mask=0, ellipsis_mask=0, new_axis_mask=0, shrink_axis_mask=0, var=None, name=None) {#stride…

Python3 - cifar10をダウンロードして画像を表示させてみる

参考: Convolutional Neural Networks https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10/ 上記githubに実際のコードがあります。 Cifar10というのは、10種類のカラー画像が沢山入ってるやつで、機械学習によく使われるようです。…

Numpy - 配列の形を変えるテスト

TensorFlowでは頻繁に配列の形を変換しますが、結構混乱して理解するのに時間がかかります。Numpy.reshapeとかNumpy.transposeの動きをシンプルな配列で確認してみます。 これから操作する配列は、下記のようなCifar10の画像データの構造をイメージしてます…

TensorFlow - tf.gfile.Exists

tf.gfile.Existsを調べます。 コード例 if tf.gfile.Exists(FLAGS.train_dir): tf.gfile.DeleteRecursively(FLAGS.train_dir) tf.gfile.MakeDirs(FLAGS.train_dir) サンプルコード import tensorflow as tf dir_path = './hoge' if tf.gfile.Exists(dir_path…

TensorFlow - tf.app.flags.FLAGS(ファイル実行時にパラメタを付与できるようにする)

tf.app.flags.FLAGSを使うと、TensorFlowのPythonファイルを実行する際にパラメタを付与できるようになる。 下記のようにすると、パラメタ付与が可能になり、デフォルト値やヘルプ画面の説明文を登録できる。tf.app.flags.DEFINE_stringは、String型用で、他…

TensorFlow - TensorBoard

TensorBoardを使うと、設定したノード間の繋がりや、訓練状況等をグラフで表示できます。 シンプルな使い方 コードサンプル import tensorflow as tf a = tf.constant(2) b = tf.constant(3) add = tf.add(a, b) with tf.Session() as sess: tf.summary.File…

TensorFlow - 畳み込みニューラルネットワーク(CNN)をやってみる

TensorFlowのチュートリアルにあるので見てみます。 Deep MNIST for Experts 日本語に訳してくれているのがこれです。 CNNとは?(メモ) 畳み込みニューラルネットワーク(CNN)は、Convolutional neural networkの略だそうです。CNNじゃない一般的なものは…

TensorFlow - 畳み込み演算の関数 tf.nn.conv2d

TensorFlowには、畳み込み演算用の関数があります。tf.nn.conv2dです。下記のように使います。 tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') xは、元画像です。Wはフィルターのパラメタです。stridesはフィルタの適用間隔です。paddingはフィ…

畳み込みフィルターで画像をぼかしてみる

畳み込みニューラルネットワークは、畳み込みフィルターを使ってますが、畳み込みフィルターを使うと画像を加工出来ます。ぼかすには、画像の明るさを周辺の明るさの平均をとってそれで埋めていくことでぼけます。 適当な画像をぼかしてみようと思います。 …

手書き文字を作れるJavascriptをつくってTensorFlowで予測させてみた

MNISTでテストしているだけだと味気ないので、ブラウザで数字を手書きして、それを予測するようにしてみました。JavascriptのCanvasでお絵かきアプリみたいのを作って、そこに手書きで数字を書いてボタン押したら、28x28に縮小して、Base64の状態でサーバに…