暑假就在接觸tensorflow了,但是一直斷斷續續的,所以現在又開始撿起來繼續學。
ps 我用的**源於 大佬寫的很好,我也是跟著他的 **,在他的**上,寫上 自己的理解。
"""
構造乙個3層的網路
輸入層乙個結點,隱層3個結點,輸出層乙個結點
輸入層的維度是[n,1]
隱層的維度是 [1,10]
輸出層的維度是[10,1]
so,權值矩陣的維度是:
weight1=[1,10]
bais1=[10,1]
weight2=[10,1]
bais2=[1,1]
網路的結構和1.5的內容是一樣的,只不過是這一次把每次的訓練結構視覺化show出來了
"""import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#影象模組
#新增層函式
def add_layer(inputs, in_size, out_size, activation_function=none):
weights = tf.variable(tf.random_normal([in_size, out_size]))
# 建立 【in_size * out_size】的矩陣,服從正態分部
# 我們給這一層加的權重是隨機生成的
biases = tf.variable(tf.zeros([1, out_size]) + 0.1)
wx_plus_b = tf.matmul(inputs, weights) + biases
#這一步設定了內部函式式如何轉化的,這裡是 利用矩陣乘法 + 矩陣加法
#也就是可以理解線性函式
##tf.matmul是矩陣乘法
if activation_function is none:
outputs = wx_plus_b
else:
outputs = activation_function(wx_plus_b)
return outputs
# make up some real data
x_data = np.linspace(-1, 1, 300)[:, np.newaxis]
#產生-1到1之間均勻分布的300個數
noise = np.random.normal(0, 0.05, x_data.shape)
#雜訊y_data = np.square(x_data) - 0.5
#y =x**2-0.5 +noise
plt.scatter(x_data, y_data)
plt.show()
## define placeholder for inputs to network
#設定佔位符
xs = tf.placeholder(tf.float32, [none, 1])
ys = tf.placeholder(tf.float32, [none, 1])
#x_data相當於輸入層
# add hidden layer
#新增隱藏層
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
# add output layer
#輸出**層
prediction = add_layer(l1, 10, 1, activation_function=none)
# the error between prediction and real data
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction), reduction_indices=[1]))
#損失函式,reduction_indices引數,表示函式的處理維度。
train_step = tf.train.gradientdescentoptimizer(0.1).minimize(loss)
#訓練函式,梯度下降,學習速度為0.1
# important step
sess = tf.session()
#初始# tf.initialize_all_variables() no long valid from
# 2017-03-02 if using tensorflow >= 0.12
if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1:
init = tf.initialize_all_variables()
else:
init = tf.global_variables_initializer()
sess.run(init)
#生成所有變數
#print(x_data)
#print("\n")
#print(y_data)
# plot the real data
plt.scatter(x_data,y_data) #繪製散點圖
prediction_value=none #**矩陣
for i in range(1000):
# training
#訓練sess.run(train_step, feed_dict=)
if i % 500 == 0:
global prediction_value
prediction_value= sess.run(prediction, feed_dict=)
# plot the prediction
plt.plot(x_data, prediction_value)
plt.show()
print(type(prediction_value))
print(prediction_value.shape)
for i in range(300):
print(y_data[i,:]," ",prediction_value[i,:])
Tensorflow學習之旅 2
暑假就在接觸tensorflow了,但是一直斷斷續續的,所以現在又開始撿起來繼續學。ps 我用的 源於 大佬寫的很好,我也是跟著他的 在他的 上,寫上 自己的理解。import tensorflow as tf 定義 定義乙個變數,可以理解為 var是在 的命名,而myvar是tensorflow變...
Tensorflow學習筆記No 6
本篇主要講述什麼是標準化,為什麼要標準化,以及如何進行標準化 新增bn層 傳統機器學習中標準化也叫做歸一化。一般是將資料對映到指定的範圍,用於去除不同維度資料的量綱以及量綱單位 說白了就是讓資料盡可能處於某個範圍內 資料標準化讓機器學習模型看到的不同樣本彼此之間更加相似,這有助於模型的學習與對新資料...
tensorflow學習筆記(6) 訓練模型
在神經網路優化演算法中,用的最多的是反向傳播演算法。通過tensorflow實現反向傳播演算法的第一步是使用tensorflow來表達乙個batch,tensorflow中提供了placeholder機制用於提供輸入資料。placeholder相當於定義了乙個位置,這個位置中的資料在程式執行時再指定...