Help us understand the problem. What is going on with this article?

TensorFlow(超初心者)の備忘録的まとめ 第一弾

More than 1 year has passed since last update.

経緯

なんやかんやで機械学習をしなくてはいけなくなったため、やってみたものの奥深いっていうか、ごちゃごちゃしてきたためまとめてみた。
英語のドキュメントを読むこと多いから、英単語も載せていくよ

知識レベル

取り敢えず、この記事は確率統計およびDeep Learningの基本的な知識があるものとして話を進める。Deep Learningについての知識は下の本を読んで理解していればいいかな。この本はすごくわかりやすいのでおすすめ。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

環境

macOS Mojave
Python 3.6.2
pip3 10.0.1

正規分布(normal distribution)

random_normal

tf.random_normal(
    shape,
    mean=0.0,
    stddev=1.0,
    dtype=tf.float32,
    seed=None,
    name=None
)

正規分布から乱数を出力する 

大体名前から引数の意味はわかると思うので省略する。seedは話が長くなりそうだから他の記事で書くかも...

使用例

# -*- coding:utf-8 -*-
#!/usr/bin/env python3

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

sess = tf.InteractiveSession()
x = sess.run(tf.random_normal(shape=[20000],mean=0.0,stddev=1.0,dtype=tf.float32))
fig = plt.figure()

ax = fig.add_subplot(1,1,1)
ax.hist(x,bins=100)
ax.set_title('random_normal')
ax.set_xlabel('x')
ax.set_ylabel('y')

plt.show()

スクリーンショット 2018-10-31 21.20.14.png

truncated_normal

tf.truncated_normal(
    shape,
    mean=0.0,
    stddev=1.0,
    dtype=tf.float32,
    seed=None,
    name=None
)

切断正規分布から乱数を出力する
標準偏差の2倍までを出力

使用例

# -*- coding:utf-8 -*-
#!/usr/bin/env python3

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

sess = tf.InteractiveSession()
x = sess.run(tf.truncated_normal(shape=[20000],mean=0.0,stddev=1.0,dtype=tf.float32))
fig = plt.figure()

ax = fig.add_subplot(1,1,1)
ax.hist(x,bins=100)
ax.set_title('truncated_normal')
ax.set_xlabel('x')
ax.set_ylabel('y')

plt.show()

スクリーンショット 2018-11-01 0.11.31.png

random_uniform

tf.random_uniform(
    shape,
    minval=0,
    maxval=None,
    dtype=tf.float32,
    seed=None,
    name=None
)

一様分布から乱数を出力する

使用例

# -*- coding:utf-8 -*-
#!/usr/bin/env python3

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

sess = tf.InteractiveSession()
x = sess.run(tf.random_uniform(shape=[20000],minval=-1.0,maxval=1.0,dtype=tf.float32))
fig = plt.figure()

ax = fig.add_subplot(1,1,1)
ax.hist(x,bins=100)
ax.set_title('random_uniform')
ax.set_xlabel('x')
ax.set_ylabel('y')

plt.show()

スクリーンショット 2018-11-01 0.32.16.png

matplotlibの解説を少し

plt.figure()

これで何も描かれていないウィンドウを作成。

add_subplot(nrows, ncols, index, **kwargs)

戻り値 : Axesのサブクラス
index : その図の場所
nrows = 2 , ncols = 3 の時

1 2 3
4 5 6
hist(x,bins=100)

ヒストグラムを作成。
bins : 棒の本数
詳しい説明はこちら

InteractiveSession()とSession()の違い

random_uniformは次のようにして実装することも出来る

使用例

# -*- coding:utf-8 -*-
#!/usr/bin/env python3

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt


x = tf.random_uniform(shape=[20000],minval=-1.0,maxval=1.0,dtype=tf.float32)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
with tf.Session() as sess:
    y = x.eval()

ax.hist(y,bins=100)
ax.set_title('random_uniform')
ax.set_xlabel('x')
ax.set_ylabel('y')

plt.show()

さっきと違ってrun()がeval() InteractiveSession()がSessionになってる。
結論から言うと、どちらも同じ。
このサイト様が詳しく説明してくれてる。とても参考になりました。
Tensorflow run() vs eval() と InteractiveSession() vs Session()

英単語

英語 日本語
normal distribution 正規分布
mean 平均
standard deviation 標準偏差
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away