import tensorflow as tf
目标函数:y = 0.1 * x + 0.3
假设函数:y = Weights * x + biases
预期结果:Weight接近0.1 biase接近0.3
###creat tensorflow structure start###
Weights = tf.Variable(tf.random_uniform([1], -0.1, 1.0))#生成变量 一维 随机值 初始范围-1.0-1.0
biases = tf.Variable(tf.zeros([1]))#生成变量 一维 初始值为0
y = Weights * x_data + biases#预测的y
loss = tf.reduce_mean(tf.square(y - y_data))#损失函数
optimizer = tf.train.GradientDescentOptimizer(0.5)#优化器 此处选择最基础的梯度下降优化 learningrate=0.5
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()#初始化变量
###creat tensorflow structure end###
sess = tf.Session()
sess.run(init)#激活init#非常重要
for step in range(201):#训练201次
sess.run(train)
if step % 20 == 0:#每隔20步打印一下结果
print(step, sess.run(Weights), sess.run(biases))
#0 [0.33985224] [0.23351549]
#20 [0.15669385] [0.27154386]
#40 [0.11472772] [0.29260778]
#60 [0.10382592] [0.29807967]
#80 [0.10099389] [0.29950115]
#100 [0.10025816] [0.29987043]
#120 [0.10006707] [0.29996634]
#140 [0.10001742] [0.29999128]
#160 [0.10000453] [0.29999775]
#180 [0.10000118] [0.29999942]
#200 [0.1000003] [0.29999986]
2.session
tensorflow中所有流程是以session来运行的
session的两种打开方式。第一种:
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()
第二种:
with tf.Session() as sess:#不用担心close
result2 = sess.run(product)
print(result2)
3.变量
TensorFlow中定义一个变量
#定义一个变量,命名为count
state = tf.Variable(0, name = 'counter')
定义一个常量:
one = tf.constant(1)
也可以是二维列表:
two = tf.constant([[123, 123], [234, 234])
如果要运行必须使用sess.run()
with tf.Session() as sess:
print(sess.run(two))
#[[123 123]
[234 234]]
否则直接print出的结果为
#Tensor("Const_1:0", shape=(2, 2), dtype=int32)
定义一个变量后要向运行必须先进行初始化
init = tf.global_variables_initializer()
#sess.run(init)
state = tf.Variable(0, name = 'counter')#定义一个变量 命名为counter
print(state.name)#counter:0
one = tf.constant(1)#定义一个常量
new_value = tf.add(state, one)
update = tf.assign(state, new_value)#将new_value加载到state变量上
#现在state == new_value
init = tf.global_variables_initializer()#must have if define variable
with tf.Session() as sess:
sess.run(init)#初始化所有变量
for _ in range(3):
sess.run(update)
print(sess.run(state))
#1
#2
#3