(更新中...)
我是跟着网易云课堂上的深度学习应用开发TensorFlow实践(吴明晖、李卓蓉、金苍宏)在学习tensorflow的,我会慢慢把自己敲的ppt中的例子的代码和结果整理之后放上来,以供大家一起学习!
系统:macOS
版本:
#打印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运行结果】
点击这里获得【macOS下启动+使用tensorboard教程】
【得到的结果图如下】
#计算多个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)
【结果】
(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)输出散点图
#创建模型
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,相应的填充到占位符里面去。
看一下两种写法的区别:
【输出结果】
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)
【输出结果】
【给一个新x,通过训练出来的模型求值】
#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())