Tensorflow學習之旅 6

2021-08-31 13:32:24 字數 3084 閱讀 1447

暑假就在接觸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相當於定義了乙個位置,這個位置中的資料在程式執行時再指定...