tensorflow使用基礎(1)-- 常量變量和簡單線性迴歸

import tensorflow as tf
# 常量乘
a = tf.constant([[2,3]])
b = tf.constant([[1],[2]])
mul = tf.matmul(a,b)
with tf.Session() as sess:
    print("tf mul :" ,sess.run(mul))
    print("* " ,sess.run(a*b) )
tf mul : [[8]]
*  [[2 3]
 [4 6]]
# 常量add
c = tf.constant([[10]])
add = c + mul
with tf.Session() as sess:
    print(sess.run(add))
[[18]]
# 變量
x = tf.Variable([2,3,4])
y = tf.Variable([4,5,6])
sub = tf.subtract(x,y)
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    print("tf sub : ",sess.run(sub))
    print("x -- y : ",sess.run(x-y))
tf sub :  [-2 -2 -2]
x -- y :  [-2 -2 -2]
# 變量累加
x = tf.Variable([1,2,3,4,5])
count = tf.constant([1,1,1,1,1])
update = tf.assign(x,x+count)
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
for i in range(10):
    print(sess.run(update))
[2 3 4 5 6]
[3 4 5 6 7]
[4 5 6 7 8]
[5 6 7 8 9]
[ 6  7  8  9 10]
[ 7  8  9 10 11]
[ 8  9 10 11 12]
[ 9 10 11 12 13]
[10 11 12 13 14]
[11 12 13 14 15]
#feed 
x = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)

y = x + b
with tf.Session() as sess:
    print(sess.run(y,feed_dict={x:[1],b:[1]}))
[2.]
# 構造簡單的線性模型優化器
import numpy as np
x_data = np.random.rand(100)
y_data = x_data * 0.4 + 0.7

k = tf.Variable(0.)
b = tf.Variable(0.)
y = k * x_data + b

loss = tf.reduce_mean(tf.square(y - y_data))
optmizer = tf.train.GradientDescentOptimizer(0.1)
train = optmizer.minimize(loss)

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(100):
        sess.run(train)
        if i % 20 == 0:
            print(i,'[k,b]:',sess.run([k,b]))
0 [k,b]: [0.1003051, 0.18137574]
20 [k,b]: [0.391294, 0.7030132]
40 [k,b]: [0.39383554, 0.7033986]
60 [k,b]: [0.39522153, 0.7026381]
80 [k,b]: [0.39629462, 0.7020457]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章