1.创建图,启动图
#coding=utf-8
import tensorflow as tf
#创建图,启动图
#创建一个常量op
m1=tf.constant([[3,3]])
#创建一个常量op
m2=tf.constant([[2],[3]])
#创建一个矩阵乘法op,把m1和m2传入
product=tf.matmul(m1,m2)
print product
#定义一个会话,启动默认图
sess=tf.Session()
#调用sess的方法来执行矩阵乘法,run(product)触发了图中3个op
result=sess.run(product)
print result
sess.close()
结果:
Tensor("MatMul:0", shape=(1, 1), dtype=int32)
[[15]]
2.打开会话,可以用with方式,类似于python中打开文件,这样就不需要写sess.close()
#类似于python中文件打开,还可以这样写:
with tf.Session() as sess:
result=sess.run(product)
print result
3.fetch,可以同时运行多个op
#coding=utf-8
import tensorflow as tf
#fetch,同时运行多个op
input1=tf.constant(3.0)
input2=tf.constant(2.0)
input3=tf.constant(5.0)
add=tf.add(input2,input3)
mul=tf.mul(add,input1)
with tf.Session() as sess:
result=sess.run([mul,add]) #fetch,即同时运行多个op
print result
运行结果:[21.0, 7.0]
4.变量使用,注意得初始化:
#coding=utf-8
import tensorflow as tf
x=tf.Variable([1,2])
a=tf.constant([3,3])
sub=tf.sub(x,a) #没有subtract,而是sub
add=tf.add(x,sub)
#init=tf.global_variables_initializer()
init=tf.initialize_all_variables() #变量得初始化,再赋值
with tf.Session() as sess:
sess.run(init)
print sess.run(sub)
print sess.run(add)
结果:[-2 -1]
[-1 1]
5. feed使用。
#coding=utf-8
import tensorflow as tf
#feed
#创建占位符
input1=tf.placeholder(tf.float32)
input2=tf.placeholder(tf.float32)
output=tf.mul(input1,input2)
with tf.Session() as sess:
#feed的数据以字典的形似传入
print sess.run(output,feed_dict={input1:[7.],input2:[2.]})
结果:[14.]
6. 模拟一个简单线性回归。
#coding=utf-8
import tensorflow as tf
import numpy as np
x_data=np.random.rand(100) #产生100个【0,1】之间均匀分布的随机样本,组成一个数组。
#x_data=np.random.randn(100) #产生100个符合标准正态分布的随机样本,组成一个数组
#print x_data
y_data=x_data*0.1+0.2
#print y_data
#构建一个线性模型
b=tf.Variable(0.)
k=tf.Variable(0.)
y=k*x_data+b
#二次损失函数
loss=tf.reduce_mean(tf.square(y_data-y))
#定义一个梯度下降法,学习率设为0.2
optimizer=tf.train.GradientDescentOptimizer(0.2)
#最小化损失函数
train=optimizer.minimize(loss)
#初始化变量
init=tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
for step in range(201): #进行200次训练
sess.run(train)
if step%20==0:
print '第%s次迭代' % step,sess.run([k,b])
结果:
/home/troy/anaconda2/envs/tensorflow/bin/python /home/troy/1.py
第0次迭代 [0.05753546, 0.101332486]
第20次迭代 [0.10610209, 0.19651218]
第40次迭代 [0.10354608, 0.19797316]
第60次迭代 [0.10206071, 0.19882216]
第80次迭代 [0.10119754, 0.19931552]
第100次迭代 [0.100695916, 0.19960223]
第120次迭代 [0.10040441, 0.19976886]
第140次迭代 [0.10023502, 0.19986567]
第160次迭代 [0.100136586, 0.19992192]
第180次迭代 [0.10007937, 0.19995463]
第200次迭代 [0.10004611, 0.19997364]