1、根據波士頓房價信息進行預測,多元線性迴歸+特徵數據歸一化數組
#讀取數據 %matplotlib notebook import tensorflow as tf import matplotlib.pyplot as plt import numpy as np import pandas as pd #能快速讀取常規大小的文件。Pandas能提供高性能、易用的數據結構和數據分析工具 from sklearn.utils import shuffle #隨機打亂工具,將原有序列打亂,返回一個全新的順序錯亂的值 #讀取數據文件 df = pd.read_csv("data/boston.csv",header=0) #顯示數據描述信息 # print(df.describe()) # print(df) #數據準備 #獲取df的值 df = df.values #把df轉換成np的數組格式 df = np.array(df) #特徵數據歸一化 #對特徵數據{0到11}列 作(0-1)歸一化 for i in range(12): df[:,i] = (df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min()) #x_data爲歸一化後的前12列特徵數據 x_data = df[:,:12] #y_data爲最後1列標籤數據 y_data = df[:,12] #模型定義 #定義特徵數據和標籤數據的佔位符 #shape中None表示行的數量未知,在實際訓練時決定一次帶入多少行樣本,從一個樣本的隨機SDG到批量SDG均可以 x = tf.placeholder(tf.float32,[None,12],name = "X") #12個特徵數據(12列) y = tf.placeholder(tf.float32,[None,1],name = "Y") #1個標籤數據(1列) #定義模型函數 #定義了一個命名空間. #命名空間name_scope,Tensoflow計算圖模型中常有數以千計節點,在可視化過程當中很難一會兒所有展現出來/ #所以可用name_scope爲變量劃分範圍,在可視化中,這表示在計算圖中的一個層級 with tf.name_scope("Model"): # w 初始化值爲shape=(12,1)的隨機數 w = tf.Variable(tf.random_normal([12,1],stddev=0.01),name="W") # b 初始化值爲1.0 b = tf.Variable(1.0,name="b") # w和x是矩陣相乘,用matmul,不能用mutiply或者* def model(x,w,b): return tf.matmul(x,w) + b #預測計算操做,前向計算節點 pred = model(x,w,b) #模型訓練 #設置訓練超參數 #迭代輪次 train_epochs = 50 #學習率 learning_rate = 0.01 #定義均方差損失函數 #定義損失函數 with tf.name_scope("LossFunction"): loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方偏差 #建立優化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #聲明會話 sess = tf.Session() #定義初始化變量的操做 init = tf.global_variables_initializer() #啓動會話 sess.run(init) #迭代訓練 for epoch in range(train_epochs): loss_sum = 0.0 for xs,ys in zip(x_data,y_data): xs = xs.reshape(1,12) ys = ys.reshape(1,1) #feed數據必須和Placeholder的shape一致 _,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys}) loss_sum = loss_sum + loss #打亂數據順序,防止按原次序假性訓練輸出 x_data,y_data = shuffle(x_data,y_data) b0temp = b.eval(session=sess) #訓練中當前變量b值 w0temp = w.eval(session=sess) #訓練中當前權重w值 loss_average = loss_sum/len(y_data) #當前訓練中的平均損失 print("epoch=",epoch+1,"loss=",loss_average,"b=",b0temp,"w=",w0temp) #模型應用 n = np.random.randint(506) #隨機肯定一條來看看效果 print(n) x_test = x_data[n] x_test = x_test.reshape(1,12) predict = sess.run(pred,feed_dict={x:x_test}) print("預測值:%f"%predict) target = y_data[n] print("標籤值:%f"%target)
2、根據波士頓房價信息進行預測,多元線性迴歸+特徵數據歸一化+可視化session
#讀取數據 %matplotlib notebook import tensorflow as tf import matplotlib.pyplot as plt import numpy as np import pandas as pd #能快速讀取常規大小的文件。Pandas能提供高性能、易用的數據結構和數據分析工具 from sklearn.utils import shuffle #隨機打亂工具,將原有序列打亂,返回一個全新的順序錯亂的值 #讀取數據文件 df = pd.read_csv("data/boston.csv",header=0) #顯示數據描述信息 # print(df.describe()) # print(df) #數據準備 #獲取df的值 df = df.values #把df轉換成np的數組格式 df = np.array(df) #特徵數據歸一化 #對特徵數據{0到11}列 作(0-1)歸一化 for i in range(12): df[:,i] = (df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min()) #x_data爲歸一化後的前12列特徵數據 x_data = df[:,:12] #y_data爲最後1列標籤數據 y_data = df[:,12] #模型定義 #定義特徵數據和標籤數據的佔位符 #shape中None表示行的數量未知,在實際訓練時決定一次帶入多少行樣本,從一個樣本的隨機SDG到批量SDG均可以 x = tf.placeholder(tf.float32,[None,12],name = "X") #12個特徵數據(12列) y = tf.placeholder(tf.float32,[None,1],name = "Y") #1個標籤數據(1列) #定義模型函數 #定義了一個命名空間. #命名空間name_scope,Tensoflow計算圖模型中常有數以千計節點,在可視化過程當中很難一會兒所有展現出來/ #所以可用name_scope爲變量劃分範圍,在可視化中,這表示在計算圖中的一個層級 with tf.name_scope("Model"): # w 初始化值爲shape=(12,1)的隨機數 w = tf.Variable(tf.random_normal([12,1],stddev=0.01),name="W") # b 初始化值爲1.0 b = tf.Variable(1.0,name="b") # w和x是矩陣相乘,用matmul,不能用mutiply或者* def model(x,w,b): return tf.matmul(x,w) + b #預測計算操做,前向計算節點 pred = model(x,w,b) #模型訓練 #設置訓練超參數 #迭代輪次 train_epochs = 50 #學習率 learning_rate = 0.01 #定義均方差損失函數 #定義損失函數 with tf.name_scope("LossFunction"): loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方偏差 #建立優化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #聲明會話 sess = tf.Session() #定義初始化變量的操做 init = tf.global_variables_initializer() #啓動會話 sess.run(init) #迭代訓練 loss_list = [] #用於保存loss值的列表 for epoch in range(train_epochs): loss_sum = 0.0 for xs,ys in zip(x_data,y_data): xs = xs.reshape(1,12) ys = ys.reshape(1,1) #feed數據必須和Placeholder的shape一致 _,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys}) loss_sum = loss_sum + loss loss_list.append(loss) #每步添加一次 #打亂數據順序,防止按原次序假性訓練輸出 x_data,y_data = shuffle(x_data,y_data) b0temp = b.eval(session=sess) #訓練中當前變量b值 w0temp = w.eval(session=sess) #訓練中當前權重w值 loss_average = loss_sum/len(y_data) #當前訓練中的平均損失 # loss_list.append(loss_average) #每輪添加一次 print("epoch=",epoch+1,"loss=",loss_average,"b=",b0temp,"w=",w0temp) plt.plot(loss_list) #模型應用 n = np.random.randint(506) #隨機肯定一條來看看效果 print(n) x_test = x_data[n] x_test = x_test.reshape(1,12) predict = sess.run(pred,feed_dict={x:x_test}) print("預測值:%f"%predict) target = y_data[n] print("標籤值:%f"%target)
3、根據波士頓房價信息進行預測,多元線性迴歸+特徵數據歸一化+可視化+TensorBoard可視化數據結構
#讀取數據 %matplotlib notebook import tensorflow as tf import matplotlib.pyplot as plt import numpy as np import pandas as pd #能快速讀取常規大小的文件。Pandas能提供高性能、易用的數據結構和數據分析工具 from sklearn.utils import shuffle #隨機打亂工具,將原有序列打亂,返回一個全新的順序錯亂的值 #讀取數據文件 df = pd.read_csv("data/boston.csv",header=0) #顯示數據描述信息 # print(df.describe()) # print(df) #數據準備 #獲取df的值 df = df.values #把df轉換成np的數組格式 df = np.array(df) #特徵數據歸一化 #對特徵數據{0到11}列 作(0-1)歸一化 for i in range(12): df[:,i] = (df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min()) #x_data爲歸一化後的前12列特徵數據 x_data = df[:,:12] #y_data爲最後1列標籤數據 y_data = df[:,12] #模型定義 #定義特徵數據和標籤數據的佔位符 #shape中None表示行的數量未知,在實際訓練時決定一次帶入多少行樣本,從一個樣本的隨機SDG到批量SDG均可以 x = tf.placeholder(tf.float32,[None,12],name = "X") #12個特徵數據(12列) y = tf.placeholder(tf.float32,[None,1],name = "Y") #1個標籤數據(1列) #定義模型函數 #定義了一個命名空間. #命名空間name_scope,Tensoflow計算圖模型中常有數以千計節點,在可視化過程當中很難一會兒所有展現出來/ #所以可用name_scope爲變量劃分範圍,在可視化中,這表示在計算圖中的一個層級 with tf.name_scope("Model"): # w 初始化值爲shape=(12,1)的隨機數 w = tf.Variable(tf.random_normal([12,1],stddev=0.01),name="W") # b 初始化值爲1.0 b = tf.Variable(1.0,name="b") # w和x是矩陣相乘,用matmul,不能用mutiply或者* def model(x,w,b): return tf.matmul(x,w) + b #預測計算操做,前向計算節點 pred = model(x,w,b) #模型訓練 #設置訓練超參數 #迭代輪次 train_epochs = 50 #學習率 learning_rate = 0.01 #定義均方差損失函數 #定義損失函數 with tf.name_scope("LossFunction"): loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方偏差 #建立優化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #聲明會話 sess = tf.Session() #定義初始化變量的操做 init = tf.global_variables_initializer() #爲TensorBoard可視化準備數據 #設置日誌存儲目錄 logdir='d:/log' #建立一個操做,用於記錄損失值loss,後面在TensorBoard中SCALARS欄可見 sum_loss_op = tf.summary.scalar("loss",loss_function) #把全部須要記錄摘要日誌文件的合併,方便一次性寫入 merged = tf.summary.merge_all() #啓動會話 sess.run(init) #建立摘要的文件寫入器 #建立摘要writer,將計算圖寫入摘要文件,後面在Tensorflow中GRAPHS欄可見 writer = tf.summary.FileWriter(logdir,sess.graph) #迭代訓練 loss_list = [] #用於保存loss值的列表 for epoch in range(train_epochs): loss_sum = 0.0 for xs,ys in zip(x_data,y_data): xs = xs.reshape(1,12) ys = ys.reshape(1,1) #feed數據必須和Placeholder的shape一致 _,summary_str,loss = sess.run([optimizer,sum_loss_op,loss_function],feed_dict={x:xs,y:ys}) writer.add_summary(summary_str,epoch) loss_sum = loss_sum + loss # loss_list.append(loss) #每步添加一次 #打亂數據順序,防止按原次序假性訓練輸出 x_data,y_data = shuffle(x_data,y_data) b0temp = b.eval(session=sess) #訓練中當前變量b值 w0temp = w.eval(session=sess) #訓練中當前權重w值 loss_average = loss_sum/len(y_data) #當前訓練中的平均損失 loss_list.append(loss_average) #每輪添加一次 print("epoch=",epoch+1,"loss=",loss_average,"b=",b0temp,"w=",w0temp) plt.plot(loss_list) #模型應用 n = np.random.randint(506) #隨機肯定一條來看看效果 print(n) x_test = x_data[n] x_test = x_test.reshape(1,12) predict = sess.run(pred,feed_dict={x:x_test}) print("預測值:%f"%predict) target = y_data[n] print("標籤值:%f"%target)
———網易雲課堂《深度學習應用開發Tensorflow實踐》學習記錄app