前几天把Tensorflow 装好了,在虚拟环境中运行。同时用cmd安装了jupyter notebook
对于jupyter notebook打开的初始目录更改,网上有很多,我试了更改配置文件的方法,但是并没用。
只好先cd 到指定目录,在打开jupyter。
接下来是第二章的学习内容,直接上代码,都有备注。
Tensorflow任何操作要在OP下运行,就和绘画的画图一样,最后都要调用paint方法一样。
第二章主要介绍了变量/常量和一些基本运算和简单的示例以及feed 和fetch的介绍
2-1 创建图,启动图
# coding: utf-8
import tensorflow as tf
#创建一个常量OP
m1=tf.constant([[3,3]])
m2=tf.constant([[2],[3]])
#创建一个矩阵乘法OP,把M1M2传入
product=tf.matmul(m1,m2)
#这时候打印是打印不出来的
print(product)
#这是正常的创建图的方法
sess=tf.Session()
result=sess.run(product)
print(result)
sess.close() #关闭图
#这是我们常用的方法
with tf.Session() as sess:
result=sess.run(product)
print(result)
2-2变量
# coding: utf-8
import tensorflow as tf
#变量,初始值为[1,2]
x=tf.Variable([1,2])
#常量
a=tf.constant([3,3])
#减法OP
sub=tf.subtract(x,a)
#加法OP
add=tf.add(x,sub)
#先全局变量初始化一下,只有变量需要初始化,constant不需要
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(sub))
print(sess.run(add))
#设计一个自加1的程序
#创建一个变量,初始化为0
state=tf.Variable(0,name='counter')
#创建一个OP 使state加1
new_value=tf.add(state,1)
#赋值OP 把后面的赋值给前面
update=tf.assign(state,new_value)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(state))
for _ in range(5):
sess.run(update)
print(sess.run(state))
2-3 Fetch and Feed
# coding: utf-8
import tensorflow as tf
#Feth 绘画里可以同时执行多个OP,得到结果
#定义3个常量
input1=tf.constant(3.0)
input2=tf.constant(2.0)
input3=tf.constant(5.0)
add=tf.add(input2,input3)
mul=tf.multiply(input1,add) #乘法
with tf.Session() as sess:
#同时执行多个OP
result=sess.run([mul,add])
print(result)
#Feed
input1=tf.placeholder(tf.float32) #定义两个占位符 , 32位浮点型
input2=tf.placeholder(tf.float32)
output=tf.multiply(input1,input2)
with tf.Session() as sess:
#Feed 的数据以字典形式传入,其作用是可以后期赋值,先用占位符
print(sess.run(output,feed_dict={input1:[7.0],input2:[2.]}))
2-4Tensorflow 简单示例
# coding: utf-8
import tensorflow as tf
import numpy as np
#使用Numpy生成100个随机点
x_data=np.random.rand(100)
y_data=x_data*0.1+0.2
#构造一个线性模型
b=tf.Variable(0.)
k=tf.Variable(0.)
y=k*x_data+b
#定义一个二次代价函数
loss=tf.reduce_mean(tf.square(y_data-y))
#定义一个梯度下降法来进行训练的优化器
optimizer=tf.train.GradientDescentOptimizer(0.2) # 梯度下降法 0.2 的学习率
#最小化代价函数
train=optimizer.minimize(loss)
#初始化变量
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for step in range(201):
sess.run(train)
#每训练20次打印一次结果
if step%20 ==0:
print(step,sess.run([k,b]))