So-net無料ブログ作成
検索選択
2017年08月| 2017年09月 |- ブログトップ

やる気スイッチが入らない…(´・ω・`) [徒然日記]

最近、仕事が忙しいのもあるのですが、この夏の忙しさの反動のせいか、早めに家に帰っても前ほど趣味の電子工作やらプログラミングに食指が動かない。


no_motivation.gif


ブログを振り返ってみると、OV7670やドローンが中途半端な状態で終わっている。うーむ、気持ちが悪い。とはいうものの始めたばかりのディープラーニングも中途半端に終わらせたくないし。


yaruki_switch.png


早くやる気スイッチ直ってくれー!
(´・ω・`)










nice!(29)  コメント(3) 
共通テーマ:趣味・カルチャー

グローバル化と勤務時間短縮の矛盾(4コマ漫画)(´・ω・`) [4コマ漫画]

最近の流行に乗り、うちの会社でも勤務時間短縮の運動が盛んになってます。個人的には短い時間で成果を出すという姿勢は大賛成です。職場に長居してると碌なことないしね。

とは言うものの、仕事がグローバル化してくるとそういう訳にもいかず。。。


workefficency.png


米国との打ち合わせは早朝。ヨーロッパとの打ち合わせは夕刻から。会議はなるべく会社で、となっているので、どうしても会社にいる時間が長くなってしまいます。

うーん、次は政府には在宅勤務を推奨してほしいなぁ。外資だと家から会議参加なんて当たり前なんだけど。
(´・ω・`)








nice!(34)  コメント(3) 
共通テーマ:趣味・カルチャー

さよならカッシーニ 。・゚・(ノД`)・゚・。 [徒然日記]

ついにカッシーニが土星の一部となってしまいました。今まで驚くべき発見の数々、そして素晴らしい土星の画像をありがとう。こちらのNASAの動画をぜひ見てみてください。何度見ても感動します。


cassini last.png


NASAのライブを見ていたのですが、プロジェクトが始まってから30年。多くのプロジェクトメンバーは60近くもしくはそれ以上の人たちばかり。研究者としてのキャリアを全てカッシーニに捧げてきた人たちです。


36403122434_0dcbf4fa70_z.jpg


今日の日は、決して忘れることができないでしょう。

カッシーニの最後の軌道です。ちょうど土星の赤道あたりに突っ込んだようです。


cassini last moment.png


こちらが通信が途切れるまでの軌跡です。かなり速いスピードで濃い土星の大気に突っ込んだので、2分くらいで燃え尽きたようです。


cassini last moment 2.png


もう少し詳しい図がありました。研究者としては、Well-mixed atmosphere まで届いて欲しかったでしょうね。


cassini last moment 3.png


カッシーニは最後の最後までアンテナを地球に向けてデータを送信をし続けていたようです。「はやぶさ」もそうでしたが、なんだか健気で感動的ですよね。


cassini last3.png


NASAが今回のミッション完遂の記念に、カッシーニの偉業をまとめた eBook を配布しています。綺麗な写真と簡潔な説明で眺めているだけでも楽しめます。

https://www.nasa.gov/connect/ebooks/the-saturn-system.html


残念ながら、次の土星探査の計画は未定のようです。息子の世代ではタイタンやエンケラドス、さらには、もっと遠方の天王星や海王星にも探査機を送ってくれないかな~。
((o(´∀`)o))








nice!(36)  コメント(6) 
共通テーマ:趣味・カルチャー

「カエルの楽園」を読んでみた! [徒然日記]

娘と息子から、面白いよと勧められて読んでみたのが、こちらの本。今話題になっているようですね。知りませんでした。


DSC04823.jpg


この物語は、難民となって放浪していたアマガエルのソクラテスが、命からがらたどり着いた国「ナパージュ」での騒動を、彼の視点で描いたものです。


「ナパージュ」のカエルは皆、平和的で規律正しくよそ者にも優しく接してくれる楽園でした。

ただ、この国は少しだけ奇妙な点がありました。一つは「三戒」という奇妙な決まりを持っていること。「カエルを信じろ」、「カエルと争うな」、「争うための力をもつな」というもの。カエルがカエルを喰らう所を幾多も見てきたソクラテスには到底理解できない決まりでした。

もう一つは、この国のカエルは喜々として「謝りソング」を歌うこと。”自分たちは生まれながらに積み深く、すべての罪は自分たちにある”という内容。なのに、なぜか皆うれしそうに歌っている。

さらに奇妙なのは、この国のカエルは、「三戒」があることで平和が守られていると信じきっていること。カエルがカエルを殺す、ワシや蛇に一方的に喰われるのがカエルの現実だと知っているソクラテスは、なぜこの国が平和なのか理解に苦しみます。


しかし、ソクラテスはその平和は、この国の高みに巣を持つワシのおかげで保たれていると気がつきます。決して「三戒」によって平和が守られているわけではないと。

そんなある日、下の沼地から天敵ともいえるヒキガエルが、ナパージュの領地に踏み込んでくる事件が発生しました。ナパージュの国は「三戒」をめぐり国民を二分する議論に発展。国は次第に混乱していきます。。。


続きは本を読んでくださいね。



まぁ、大体想像がつくとは思いますが、このおとぎ話はどこかの国がモチーフとなっています。本の内容はあまりにダイレクトで現実味があり、背筋が寒くなる思いです。

いろんな人たちに、この本の感想を聞いてみたくなりました。特に今のメディアの在り方に疑問を持っている人たちにお勧めの一冊です!
(^_^)/~






カエルの楽園 (新潮文庫)

カエルの楽園 (新潮文庫)

  • 作者: 百田 尚樹
  • 出版社/メーカー: 新潮社
  • 発売日: 2017/08/27
  • メディア: 文庫



「カエルの楽園」が地獄と化す日

「カエルの楽園」が地獄と化す日

  • 作者: 百田尚樹
  • 出版社/メーカー: 飛鳥新社
  • 発売日: 2016/11/11
  • メディア: 単行本(ソフトカバー)



言ってはいけない 残酷すぎる真実 (新潮新書)

言ってはいけない 残酷すぎる真実 (新潮新書)

  • 作者: 橘 玲
  • 出版社/メーカー: 新潮社
  • 発売日: 2016/04/15
  • メディア: 新書




nice!(41)  コメント(4) 
共通テーマ:趣味・カルチャー

ラズパイマガジン10月号に掲載されましたー(∩´∀`)∩ [Raspberry Pi]

夏休みに苦労して書いた記事が、ラズパイマガジン10月号に掲載されました!80ページの特集記事4です。書店で見かけたら、手に取って中身を見ていただけると、とっても嬉しいです。


DSC04822.jpg


会社のサークルメンバと分担をして書いたのですが、だいたい6割くらいのページを担当しました。一番苦労したのは車両の電気部分の組み立て。


DSC04829.jpg
DSC04825.jpg


カメラストリーミングとサーボ制御部分のソフトウェアはこちら。


DSC04826.jpg


ブラウザからコントロールできちゃいます。


DSC04828.jpg


なんと記事を書いている最中に、Raspberry Pi Zero W がリリースされ、システムを換装。


DSC04827.jpg


まぁ、良くがんばったなと。記事を書いている最中のぼやきはこちらを参照ください。

しかし、こうやって記事が形になるのは、ブログのアクセス数が伸びるのとは違う喜びがありますね。でも、記事をもう一度振り返って読みたいとは思いませんが…
( ̄▽ ̄;)





ラズパイマガジン 2017年10月号 (日経BPパソコンベストムック)

ラズパイマガジン 2017年10月号 (日経BPパソコンベストムック)

  • 作者:
  • 出版社/メーカー: 日経BP社
  • 発売日: 2017/09/04
  • メディア: ムック



Raspberry Pi Zero - ラズベリー・パイ ゼロ

Raspberry Pi Zero - ラズベリー・パイ ゼロ

  • 出版社/メーカー: Raspberry Pi Foundation(Raspberry Pi財団)
  • メディア: Personal Computers



Raspberry Pi Zero W Starter Kit

Raspberry Pi Zero W Starter Kit

  • 出版社/メーカー: ケイエスワイ
  • メディア: エレクトロニクス




nice!(29)  コメント(3) 
共通テーマ:趣味・カルチャー

TensorFlow MNIST For ML Beginners をやってみた(1) [Deep Learning]

TensorFlow でいよいよ認識処理を試してみたいと思います。ニューラルネットワークの基本中の基本である手書き文字の認識が例題です。


MNIST For ML Beginners.png


MNIST とは、その手書き文字を学習させるためのデータセットのことです。(MLとは Machine Learning のことです)例えばこんなデータが訓練用に6万点、テスト用に1万点、用意されています。


MNIST data sample.png


MNISTのデータは Yann LeCun's website からダウンロードすることができます。ダウンロードしてくるファイルは4種類あります。

train-images-idx3-ubyte.gz
train-labels-idx1-ubyte.gz
t10k-images-idx3-ubyte.gz
t10k-labels-idx1-ubyte.gz

これらをダウンロードしたら、MNIST_data というディレクトリを作って格納しておきます。解凍は必要はありません。


Deep Learning用のテストプログラムを用意します。TensorFlow GitHub Site からもダウンロードできます。

# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================

"""A very simple MNIST classifier.
See extensive documentation at
https://www.tensorflow.org/get_started/mnist/beginners
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import argparse
import sys
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

from tensorflow.examples.tutorials.mnist import input_data

import tensorflow as tf

FLAGS = None


def main(_):
  # Import data
  mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)

  # Create the model
  x = tf.placeholder(tf.float32, [None, 784])
  W = tf.Variable(tf.zeros([784, 10]))
  b = tf.Variable(tf.zeros([10]))
  y = tf.matmul(x, W) + b

  # Define loss and optimizer
  y_ = tf.placeholder(tf.float32, [None, 10])

  # The raw formulation of cross-entropy,
  #
  #   tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.nn.softmax(y)),
  #                                 reduction_indices=[1]))
  #
  # can be numerically unstable.
  #
  # So here we use tf.nn.softmax_cross_entropy_with_logits on the raw
  # outputs of 'y', and then average across the batch.
  cross_entropy = tf.reduce_mean(
      tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
  train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

  sess = tf.InteractiveSession()
  tf.global_variables_initializer().run()
  # Train
  for _ in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

  # Test trained model
  correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
  accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
  print(sess.run(accuracy, feed_dict={x: mnist.test.images,
                                      y_: mnist.test.labels}))

if __name__ == '__main__':
  parser = argparse.ArgumentParser()
  parser.add_argument('--data_dir', type=str, default='/tmp/tensorflow/mnist/input_data',
                      help='Directory for storing input data')
  FLAGS, unparsed = parser.parse_known_args()
  tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)


実際に動かしてみました。

C:\Users\Taro\Documents\TensorFlow>python mnist_softmax.py --data_dir MNIST_data
Extracting MNIST_data\train-images-idx3-ubyte.gz
Extracting MNIST_data\train-labels-idx1-ubyte.gz
Extracting MNIST_data\t10k-images-idx3-ubyte.gz
Extracting MNIST_data\t10k-labels-idx1-ubyte.gz
0.9206


素っ気ない結果ですね。何をしているかはソースコードを読み解くしかありません。大きな処理の流れは以下になります。

(1)MNISTデータを読み込み
(2)ニューラルネットワークの数式モデルを定義
(3)損失関数を設定
(4)学習データでネットワークを学習
(5)テストデータで結果を確認

という感じです。それぞれのコードを抜粋すると以下になります。


(1)MNISTデータの読み込み
mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)

最後の one_hot というのは、一つの正解だけが1でその他は0となるような設定のことです。


(2)ニューラルネットワークの数式モデルを定義
  x = tf.placeholder(tf.float32, [None, 784])
  W = tf.Variable(tf.zeros([784, 10]))
  b = tf.Variable(tf.zeros([10]))
  y = tf.matmul(x, W) + b

784 x 10 の配列が定義されていますが、これは、28pixel x 28pixel = 784 pixel の文字データ、0-9 の10個のデータを示しています。x は手書きデータの入力で、bはバイアス、yはその出力です。

yWxb.png


(3)損失関数を設定
cross_entropy = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))

このニューラルネットワークの判定には、softmax 関数というものを使います。

softmax.png

詳細の理屈は抜きにして、この場合、損失関数には cross_entropy という関数を使います。

crossentropy.png


(4)学習データでネットワークを学習
 for _ in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

ここで batch というものが出てきました。この場合は100個データの損失関数を算出してその平均を学習用の損失データとして扱うという処理方法の様です。学習のための計算量を減らすことができると考えておけばよさそうです。


(5)テストデータで結果を確認
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

argmax(y, 1) というのはy行列の中から最大値を一つだけ抽出するというものです。yの計算結果と、 softmax の計算結果 y_ があっているかどうかで判定し、その判定結果の平均値から検出率を算出しています。

例えば、判定結果が [True,True,True,False,True,True,True,False,True,True] だとすると、検出率は0.8ということになります。


なんとなく処理の内容は見えてきました。次はどうやって学習しているのか詳しく見ていきたいと思います。しかし、行列演算のオンパレードで難しいなぁ。
σ(ー_ ー;





TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

  • 出版社/メーカー: インプレスR&D
  • 発売日: 2016/07/29
  • メディア: Kindle版



ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者: 斎藤 康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)



TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)

TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)

  • 作者: Nick McClure
  • 出版社/メーカー: インプレス
  • 発売日: 2017/08/14
  • メディア: 単行本(ソフトカバー)




nice!(32)  コメント(2) 
共通テーマ:趣味・カルチャー

TensorFlow Core tutorial を学んでみた(3)~ tf.estimator~ [Deep Learning]

TensorFlow Core tutorial も今回で最後です。Estimator というものを使ってみました。


trestimator.png
https://www.tensorflow.org/get_started/get_started#tfestimator


うーん、正直よく分からないのですが、損失関数が最小になるように条件を求め、かつそれを評価するためのツールといったところでしょうか?

とりあえずコードを見よう見まねで書いてみました。Basic Usage と A custom model の二つがありますが、A custom model のほうが見通しがよいので試してみました。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf
import numpy as np

# delare list of features, 
def model_fn(features, labels, mode):
    # Build a linear model 
    W = tf.get_variable("W", [1], dtype=tf.float64)
    b = tf.get_variable("b", [1], dtype=tf.float64)
    y = W * features['x'] + b
    loss = tf.reduce_sum(tf.square(y - labels))

    # training to minimize loss
    global_step = tf.train.get_global_step()
    optimizer   = tf.train.GradientDescentOptimizer(0.01)
    train = tf.group(optimizer.minimize(loss), tf.assign_add(global_step, 1))

    return tf.estimator.EstimatorSpec(mode=mode ,predictions=y 
            ,loss=loss ,train_op=train)


estimator = tf.estimator.Estimator(model_fn=model_fn)

# defin data sets
x_train = np.array([ 1.0 , 2.0 , 3.0 , 4.0])
y_train = np.array([ 0.0 ,-1.0 ,-2.0 ,-3.0])
x_eval  = np.array([ 2.0 , 5.0 , 8.0 , 1.0])
y_eval  = np.array([-1.01,-4.1 ,-7.0 , 0.0])

input_fn       = tf.estimator.inputs.numpy_input_fn(
        {"x": x_train} ,y_train ,batch_size=4 ,num_epochs=None ,shuffle=True)

train_input_fn = tf.estimator.inputs.numpy_input_fn(
        {"x": x_train} ,y_train ,batch_size=4 ,num_epochs=1000 ,shuffle=False)

eval_input_fn  = tf.estimator.inputs.numpy_input_fn(
        {"x": x_eval } ,y_eval  ,batch_size=4 ,num_epochs=1000 ,shuffle=False)

# train
estimator.train(input_fn=input_fn ,steps=1000)

# evaluate the model defined
train_metrics = estimator.evaluate(input_fn=train_input_fn)
eval_metrics  = estimator.evaluate(input_fn=eval_input_fn)
print("train metrics: %r"% train_metrics)
print("eval  metrics: %r"% eval_metrics)


実行結果がこちら。

C:\Users\Taro\Documents\TensorFlow>python estimator.py
WARNING:tensorflow:Using temporary folder as model directory: C:\Users\Taro\AppData\Local\Temp\tmp_ad4se
train metrics: {'global_step': 1000, 'loss': 1.265121e-11}
eval  metrics: {'global_step': 1000, 'loss': 0.010100436}



うーん、たしかにlossが小さくなるようになったようです。Eval は実際のデータで試してみた値なのかな。説明がほとんどないのでよく分かりません。

とりあえず、わざわざループを作らなくても損失関数を最小にできる便利なツールがある程度で理解して先に進もうと思います。
σ(ー_ ー;)ワカラン





TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

  • 出版社/メーカー: インプレスR&D
  • 発売日: 2016/07/29
  • メディア: Kindle版



ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者: 斎藤 康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)



TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)

TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)

  • 作者: Nick McClure
  • 出版社/メーカー: インプレス
  • 発売日: 2017/08/14
  • メディア: 単行本(ソフトカバー)





nice!(36)  コメント(2) 
共通テーマ:趣味・カルチャー

うーん、なんとなく体調が悪いぞ・・・(´・ω・`) [徒然日記]

ものすごく体調悪いわけではないのですが、今日は朝から眠くて眠くてしょうがない。電車は寝過ごしてしまうし、デスクではいつの間にか寝落ちするし。


feels_good_man.jpg


今日は早く帰って TensorFlow で遊ぼうかなと思ったのですが、眠くて何も頭に入らず断念。という訳で、今日は風邪薬飲んで寝ようと思います。
(´ぅω・`)ネムイ...





Without Their Permission: The Story of Reddit and a Blueprint for How to Change the World

Without Their Permission: The Story of Reddit and a Blueprint for How to Change the World

  • 作者: Alexis Ohanian
  • 出版社/メーカー: Grand Central Publishing
  • 発売日: 2016/03/01
  • メディア: ペーパーバック



Reddit Codebreaker : A rookie's guide for driving 100000 free web traffic in just two weeks (English Edition)

Reddit Codebreaker : A rookie's guide for driving 100000 free web traffic in just two weeks (English Edition)

  • 出版社/メーカー: Manpreet S.
  • 発売日: 2016/06/27
  • メディア: Kindle版



Kill Reddit: Your Reddit Domination Guide (English Edition)

Kill Reddit: Your Reddit Domination Guide (English Edition)

  • 出版社/メーカー: Memetics Ireland Ltd.
  • 発売日: 2017/03/18
  • メディア: Kindle版




タグ:仕事 日常
nice!(33)  コメント(4) 
共通テーマ:趣味・カルチャー

TensorFlow Core tutorial を学んでみた(2)~ tf.train API~ [Deep Learning]

TensorFlow の Core tutorial で紹介されている train API について学んでみました。

trtrainAPI.png
https://www.tensorflow.org/get_started/get_started#tftrain_api

train API は、損失関数である差分二乗和を最小する係数を求めていくための関数です。前回、以下の関数を考えてみました。

x = [1, 2, 3, 4]
y = [0, -1, -2, -3]
squared_deltas = (W * x + b) - y) * ((W * x + b) - y )
loss = SUM(squared_deltas)


この時に、与えられた x, y の値から loss が最小となるように W と b の値をかえていくのが train API の機能です。いくつか手法があるようですが、Core tutorial では Gradient Descent (勾配降下法) が使われています。

引数は学習係数(learning rate)で、この数値を変えることで学習速度が変わるようです。学習の様子を確認するためのサンプルコードを作ってみました。


import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

# define variables with initial value
W = tf.Variable([0.3], dtype=tf.float32)
b = tf.Variable([-0.3], dtype=tf.float32)

# Model input and output
x = tf.placeholder(tf.float32)
linear_model = W * x + b
y = tf.placeholder(tf.float32)

# loss
loss = tf.reduce_sum(tf.square(linear_model - y))

# set learning rate to gradient decent optimizer
learning_rate = 0.01
print("learning rate: %s"%learning_rate)
optimizer = tf.train.GradientDescentOptimizer(learning_rate)
train = optimizer.minimize(loss)

# training data
x_train = [1, 2, 3, 4]
y_train = [0, -1, -2, -3]

# traing loop
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
# create exection instance
sess = tf.Session()

# initialize variables
init = tf.global_variables_initializer()
sess.run(init)

# initial
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 1st training 
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 2nd training 
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 3rd training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 4th training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 5th training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 6th training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 7th training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 8th training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 9th training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

# 10th training
for i in range(100):
    sess.run(train, {x: x_train, y: y_train})
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))



学習係数を変えながら出力をしてみました。まずは係数を減らしてみます。学習係数を減らしていくとloss の減り方が緩やかになっているのが分かります。

C:\Users\Taro\Documents\TensorFlow>python trainapi.py
learning rate: 0.01
W: [ 0.30000001] b: [-0.30000001] loss: 23.66
W: [-0.84079814] b: [ 0.53192717] loss: 0.146364
W: [-0.95227844] b: [ 0.85969269] loss: 0.0131513
W: [-0.98569524] b: [ 0.95794231] loss: 0.00118168
W: [-0.99571204] b: [ 0.98739296] loss: 0.000106178
W: [-0.99871475] b: [ 0.99622124] loss: 9.5394e-06
W: [-0.99961478] b: [ 0.99886739] loss: 8.56873e-07
W: [-0.99988455] b: [ 0.99966055] loss: 7.69487e-08
W: [-0.99996537] b: [ 0.99989825] loss: 6.90848e-09
W: [-0.99998957] b: [ 0.99996936] loss: 6.24471e-10
W: [-0.9999969] b: [ 0.99999082] loss: 5.69997e-11

C:\Users\Taro\Documents\TensorFlow>python trainapi.py
learning rate: 0.005
W: [ 0.30000001] b: [-0.30000001] loss: 23.66
W: [-0.70869172] b: [ 0.14351812] loss: 0.490055
W: [-0.84021938] b: [ 0.53022552] loss: 0.14743
W: [-0.91236132] b: [ 0.74233174] loss: 0.0443537
W: [-0.95193082] b: [ 0.85867071] loss: 0.0133436
W: [-0.97363442] b: [ 0.92248183] loss: 0.00401434
W: [-0.9855386] b: [ 0.95748174] loss: 0.0012077
W: [-0.99206799] b: [ 0.97667885] loss: 0.000363336
W: [-0.99564934] b: [ 0.98720855] loss: 0.000109307
W: [-0.99761379] b: [ 0.99298412] loss: 3.2883e-05
W: [-0.9986912] b: [ 0.99615198] loss: 9.89192e-06

C:\Users\Taro\Documents\TensorFlow>python trainapi.py
learning rate: 0.001
W: [ 0.30000001] b: [-0.30000001] loss: 23.66
W: [-0.52810556] b: [-0.3849203] loss: 1.28182
W: [-0.58207232] b: [-0.22875588] loss: 1.00865
W: [-0.62926829] b: [-0.08999654] loss: 0.793704
W: [-0.67113376] b: [ 0.03309342] loss: 0.624565
W: [-0.70827162] b: [ 0.14228313] loss: 0.491469
W: [-0.74121565] b: [ 0.2391424] loss: 0.386737
W: [-0.77043933] b: [ 0.32506362] loss: 0.304323
W: [-0.796363] b: [ 0.40128195] loss: 0.239471
W: [-0.819359] b: [ 0.46889341] loss: 0.188439
W: [-0.83975828] b: [ 0.52886957] loss: 0.148283



今度は逆に係数を増やしてみました。

C:\Users\Taro\Documents\TensorFlow>python trainapi.py
learning rate: 0.01
W: [ 0.30000001] b: [-0.30000001] loss: 23.66
W: [-0.84079814] b: [ 0.53192717] loss: 0.146364
W: [-0.95227844] b: [ 0.85969269] loss: 0.0131513
W: [-0.98569524] b: [ 0.95794231] loss: 0.00118168
W: [-0.99571204] b: [ 0.98739296] loss: 0.000106178
W: [-0.99871475] b: [ 0.99622124] loss: 9.5394e-06
W: [-0.99961478] b: [ 0.99886739] loss: 8.56873e-07
W: [-0.99988455] b: [ 0.99966055] loss: 7.69487e-08
W: [-0.99996537] b: [ 0.99989825] loss: 6.90848e-09
W: [-0.99998957] b: [ 0.99996936] loss: 6.24471e-10
W: [-0.9999969] b: [ 0.99999082] loss: 5.69997e-11

C:\Users\Taro\Documents\TensorFlow>python trainapi.py
learning rate: 0.02
W: [ 0.30000001] b: [-0.30000001] loss: 23.66
W: [-0.95297438] b: [ 0.8617391] loss: 0.0127705
W: [-0.99583626] b: [ 0.98775804] loss: 0.000100119
W: [-0.9996314] b: [ 0.99891615] loss: 7.84759e-07
W: [-0.9999674] b: [ 0.99990404] loss: 6.14229e-09
W: [-0.99999708] b: [ 0.99999142] loss: 4.92442e-11
W: [-0.99999952] b: [ 0.99999869] loss: 1.06581e-12
W: [-0.99999952] b: [ 0.99999869] loss: 1.06581e-12
W: [-0.99999952] b: [ 0.99999869] loss: 1.06581e-12
W: [-0.99999952] b: [ 0.99999869] loss: 1.06581e-12
W: [-0.99999952] b: [ 0.99999869] loss: 1.06581e-12

C:\Users\Taro\Documents\TensorFlow>python trainapi.py
learning rate: 0.03
W: [ 0.30000001] b: [-0.30000001] loss: 23.66
W: [ 0.16820002] b: [ 1.35244703] loss: 49.6722
W: [ 0.73389339] b: [ 1.58857942] loss: 111.988
W: [ 1.60297251] b: [ 1.88529921] loss: 252.487
W: [ 2.90843058] b: [ 2.32934356] loss: 569.256
W: [ 4.86862707] b: [ 2.99604988] loss: 1283.44
W: [ 7.81191444] b: [ 3.9971242] loss: 2893.63
W: [ 12.23135185] b: [ 5.50027037] loss: 6523.96
W: [ 18.86728859] b: [ 7.75730085] loss: 14708.9
W: [ 28.83135033] b: [ 11.14629936] loss: 33162.6
W: [ 43.7927475] b: [ 16.23500061] loss: 74768.5

C:\Users\Taro\Documents\TensorFlow>python trainapi.py
learning rate: 0.04
W: [ 0.30000001] b: [-0.30000001] loss: 23.66
W: [  1.62939458e+22] b: [  5.54192817e+21] loss: inf
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan
W: [ nan] b: [ nan] loss: nan


0.02までは早く収束していますが、0.03から不安定になり、0.04では発散してしまいました。制御係数と同じで値を大きくしていくと発散しやすくなるようです。

当然、モデルによって最適な学習係数は変わりますが、この値は経験値で求めるのしかないのかな。その辺りも追々調べていきたいと思います。
(^_^)/~





TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

  • 出版社/メーカー: インプレスR&D
  • 発売日: 2016/07/29
  • メディア: Kindle版



ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者: 斎藤 康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)



TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)

TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)

  • 作者: Nick McClure
  • 出版社/メーカー: インプレス
  • 発売日: 2017/08/14
  • メディア: 単行本(ソフトカバー)





nice!(35)  コメント(5) 
共通テーマ:趣味・カルチャー

【祝】サッカー日本代表WC出場決定! [徒然日記]

ハリルジャパン、やってくれましたねー!ようやく思った通りのチームが作れたのではないでしょうか?スピードを落とさず細かくつなぎ、相手ゴールに迫るスタイルは、まさにヨーロピアンスタイル!完全にオーストラリアの中盤を機能不全に陥れました。

運動量が要求される戦術ですが、90分間スタミナが切れることなくプレーに集中していた姿に、今までにない新しい日本代表を見た感じがしました。


mig.jpg
http://jigokuno.com/


現に、かつて中村や中田、本田が確立した、中盤でボールをキープして味方のあがりを待つ日本サッカーの定番スタイルは、すっかり影を潜めました。

今回は若手が活躍し、世代交代が印象づけられた試合でした。攻撃は浅野、井手口もすごかったですが、原口がすごいよかった。守備も、危なっかしい場面もありましたが、早めにボールに寄りつつスペースを殺していく動きは見事でした。

元気のよい若手でハリル流サッカーが実現できれば、ロシアWCでベスト8も夢じゃないかも!?
がんばれ日本!(^^)/~











サッカー日本代表 オフィシャル ストライプ柄 ネクタイ(グレー)

サッカー日本代表 オフィシャル ストライプ柄 ネクタイ(グレー)

  • 出版社/メーカー: JFA OFFICIAL
  • メディア: その他




nice!(32)  コメント(2) 
共通テーマ:趣味・カルチャー

2017年08月|2017年09月 |- ブログトップ