TensorFlowその2
TensorFlowをインストールして、続きにGetting Startd With TensorFlowを試しておいたのでメモ。
Getting Started With TensorFlow | TensorFlow
英語はよくワカらない・・・
TensorFlow Coreチュートリアル。
Computional Graphは、固有名詞。
Computional Graphに、Tensor(0〜複数個)を入力して、出力のTensorを1つ得る。
API | こんな機能 |
tf.contrib | 開発中の機能が含まれる。将来変わる可能性がある |
tf.constant() | 定数のノードを作る |
tf.add() | ノードとノードを組み合わせる |
tf.placeholder() | 取り替えることができる記号を作る |
tf.Variable() | trainable(学習できる)なパラメータ |
tf.global_variables_initializer() | 変数を初期化する |
loss function | 損失関数 |
tf.square() | 自乗(二乗) |
tf.reduce_sum() | |
tf.assign() | trainableなパラメタに固定値をセット |
tf.train.GradientDescentOptimizer(0.01) | Gradient descent(最急降下法)での最適化アルゴリズム。 optimizer.minimize(loss)。 |
>>> node1 = tf.constant(3.0, dtype=tf.float32)
>>> node2 = tf.constant(4.0)
>>> print(node1, node2)
Tensor("Const_1:0", shape=(), dtype=float32) Tensor("Const_2:0", shape=(), dtype=float32)
>>> sess = tf.Session()
>>> print(sess.run([node1, node2]))
[3.0, 4.0]
>>> node3 = tf.add(node1, node2)
>>> print("node3: ", node3)
node3: Tensor("Add:0", shape=(), dtype=float32)
>>> print("sess.run(node3): ",sess.run(node3))
sess.run(node3): 7.0
>>> a = tf.placeholder(tf.float32)
>>> b = tf.placeholder(tf.float32)
>>> adder_node = a + b # + provides a shortcut for tf.add(a, b)
>>> print(sess.run(adder_node, {a: 3, b:4.5}))
7.5
>>> print(sess.run(adder_node, {a: [1,3], b: [2, 4]}))
[ 3. 7.]
>>> add_and_triple = adder_node * 3.
>>> print(sess.run(add_and_triple, {a: 3, b:4.5}))
22.5
>>> W = tf.Variable([.3], dtype=tf.float32)
>>> b = tf.Variable([-.3], dtype=tf.float32)
>>> x = tf.placeholder(tf.float32)
>>> linear_model = W * x + b
>>> init = tf.global_variables_initializer()
>>> sess.run(init)
>>> print(sess.run(linear_model, {x:[1,2,3,4]}))
[ 0. 0.30000001 0.60000002 0.90000004]
>>> y = tf.placeholder(tf.float32)
>>> squared_deltas = tf.square(linearmodel - y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'linearmodel' is not defined
>>> squared_deltas = tf.square(linear_model - y)
>>> loss = tf.reduce_sum(squared_deltas)
>>> print(sess.run(loss, {x:[1,2,3,4], y:[0,-1,-2,-3]}))
23.66
>>> fixW = tf.assign(W, [-1.])
>>> fixb = tf.assign(b, [1.])
>>> sess.run([fixW, fixb])
[array([-1.], dtype=float32), array([ 1.], dtype=float32)]
>>> print(sess.run(loss, {x:[1,2,3,4], y:[0,-1,-2,-3]}))
0.0
>>>
>>>
>>> optimizer = tf.train.GradientDescentOptimizer(0.01)
>>> train = optimizer.minimize(loss)
>>> sess.run(init) # reset values to incorrect defaults.
>>> for i in range(1000):
... sess.run(train, {x:[1,2,3,4], y:[0,-1,-2,-3]})
...
>>> print(sess.run([W, b]))
[array([-0.9999969], dtype=float32), array([ 0.99999082], dtype=float32)]
できた。