tensorflow自学笔记

(更新中...) 

tensorflow自学笔记_第1张图片

我是跟着网易云课堂上的深度学习应用开发TensorFlow实践(吴明晖、李卓蓉、金苍宏)在学习tensorflow的,我会慢慢把自己敲的ppt中的例子的代码和结果整理之后放上来,以供大家一起学习!

系统:macOS

版本:



如何在tensorboard中查看图

#打印1~10
import tensorflow as tf

tf.reset_default_graph()

value = tf.Variable(0,name = "value")
one = tf.constant(1)
ans = tf.add(value,one)
update = tf.assign(value,ans)
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for _ in range(10):
        sess.run(update)
        print(sess.run(value))
        
logdir = "/Users/这里写自己电脑的路径/Desktop/01"#我这里就是在桌面新建了一个文件夹   
writer = tf.summary.FileWriter(logdir,tf.get_default_graph())
writer.close()

【Jupyter运行结果】

tensorflow自学笔记_第2张图片

点击这里获得【macOS下启动+使用tensorboard教程】

【得到的结果图如下】

 

tensorflow自学笔记_第3张图片


占位符 

#计算多个a*b a-b
import tensorflow as tf

a = tf.placeholder(tf.float32,name = 'a')
b = tf.placeholder(tf.float32,name = 'b')
c = tf.multiply(a,b,name = 'c')
d = tf.subtract(a,b,name = 'd')

with tf.Session() as sess:
    rc,rd = sess.run([c,d],feed_dict = {a:[8.0,6.5,12.8],b:[5.0,8.8,20.1]})#feed_dict 占位符赋值方式,rc,rd可以按顺序分别赋值
    print("a*b = ",rc," a-b = ",rd)

【结果】 

 


tensorflow实战

(1)人工生成数据集

#假设要学习的线性函数为y=2x+1

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
np.random.seed(5)

#产生100个值在(-1,1)之间的数
x_data = np.linspace(-1,1,100)
#y = 2*x + 1 + 噪声(其中噪声的维度要和x_data的维度相同,就是元组中的元素个数相同)
#e.g. np.random.randn(10)//产生10的点的一维数组
y_data = 2*x_data + 1.0 + np.random.randn(*x_data.shape) * 0.4

#显示坐标图
plt.scatter(x_data,y_data)
plt.plot(x_data,2 * x_data + 1.0,color = 'red',linewidth = 3)

(2)输出散点图

tensorflow自学笔记_第4张图片

 


训练一个简单模型

#创建模型
x = tf.placeholder("float",name = "x")
y = tf.placeholder("float",name = "y")

def model(x,w,b):
    return tf.multiply(x,w) + b

w = tf.Variable(1.0,name = "w0")
b = tf.Variable(0.0,name = "b0")

pred = model(x,w,b)

#训练模型
#定义训练参数
train_epochs = 10 #迭代次数
rate = 0.05  #学习率(步长)
loss_function = tf.reduce_mean(tf.square(y - pred)) #损失函数

#定义优化器
optimizer = tf.train.GradientDescentOptimizer(rate).minimize(loss_function)

#开始训练
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

for epoch in range(train_epochs):
    for xs,ys in zip(x_data,y_data):#zip是组装函数,代码下面有详细解释
        _,loss = sess.run([optimizer,loss_function],feed_dict = {x:xs,y:ys})
    b0temp = b.eval(session = sess)
    w0temp = w.eval(session = sess)
    #画图
    plt.plot(x_data, w0temp * x_data + b0temp)

print("w: ",sess.run(w))
print("b: ",sess.run(b))

【关于zip解释】

  zip 是组装函数,把x_data 和 y_data组装成一个元组,每一个元组内有两个数据[a,b],xs对应每一个元组中的a,ys对应b,相应的填充到占位符里面去。

  看一下两种写法的区别:

tensorflow自学笔记_第5张图片

tensorflow自学笔记_第6张图片

【输出结果】

tensorflow自学笔记_第7张图片

plt.scatter(x_data,y_data,label='init data')
plt.plot(x_data,x_data * sess.run(w) + sess.run(b),label = 'line',color = 'r',linewidth = 3)
plt.legend(loc=2)

【输出结果】

tensorflow自学笔记_第8张图片

【给一个新x,通过训练出来的模型求值】 

tensorflow自学笔记_第9张图片


利用pandas读取数据

#matplotlib notebook
import tensorflow as tf
import numpy as np
import pandas as pd
from sklearn.utils import shuffle
df = pd.read_csv("boston.csv",header = 0)

print (df.describe())

tensorflow自学笔记_第10张图片

你可能感兴趣的:(总结,tensorflow)