個人機器學習筆記之神經網路

2021-09-11 18:46:47 字數 3256 閱讀 2891

機器學習個人筆記,學習中水平有限,內容如有缺漏歡迎指正。

神經網路是一組計算單元組成的網路,其中每個計算單元(模擬了生物界的神經)從輸入通道獲取一些資訊,進行一些計算然後將結果傳到輸出通道,最後在神經網路的輸出端獲得總的計算結果。

單個神經元的結構:

神經元做的計算通常是將輸入的a1~an乘上對應的權重w1~wn(一般還要加乙個a0、w0作為偏置項),然後求和,再將和輸入乙個被稱為啟用函式的函式,獲得的結果作為下一層神經元的輸入或直接作為神經網路的輸出。這樣的神經網路又被稱為「前饋神經網路」,因為它的計算過程是從輸入層逐層計算到輸出層的。

首先匯入包

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]))

biases = tf.variable(tf.zeros([1

, out_size])+

0.1)

wx_plus_b = tf.matmul(inputs, weights)

+ biases#wx+b,簡明易懂

if activation_function is

none

:#如果沒有啟用函式,神經元就直接返回wx+b

outputs = wx_plus_b

else

: outputs = activation_function(wx_plus_b)

return outputs

建立訓練用的資料

x_data = np.linspace(-1

,1,300)[

:, np.newaxis]

noise = np.random.normal(0,

0.05

, x_data.shape)

y_data = np.square(x_data)

-0.5

+ noise #y=x^2-0.5+雜訊

為tensorflow定義佔位符

xs = tf.placeholder(tf.float32,

[none,1

])ys = tf.placeholder(tf.float32,

[none,1

])

新增乙個隱藏層輸出層

#新增隱藏層

l1 = add_layer(xs,1,

10, activation_function=tf.nn.relu)

# 新增輸出層

prediction = add_layer(l1,10,

1, activation_function=

none

)

定義損失值和訓練步驟

#計算損失值,損失值定義為(y-**值)^2的

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction)

, reduction_indices=[1

]))#使用梯度下降定義訓練步驟來最小化損失值

train_step = tf.train.gradientdescentoptimizer(

0.1)

.minimize(loss)

初始化tensorflow的計算圖

init = tf.initialize_all_variables(

)sess = tf.session(

)sess.run(init)

繪圖

fig = plt.figure(

)ax = fig.add_subplot(1,

1,1)

ax.scatter(x_data, y_data)

plt.ion(

)plt.show(

)

訓練1000次

for i in

range

(1000):

sess.run(train_step, feed_dict=

)if i %

50==0:

#每50步計算一次損失值並繪圖

try:

ax.lines.remove(lines[0]

)except exception:

pass

prediction_value = sess.run(prediction, feed_dict=

) loss_value=sess.run(loss,feed_dict=

)# plot the prediction

plt.title(loss_value)

lines = ax.plot(x_data, prediction_value,

'r-'

, lw=5)

plt.pause(

0.1)

plt.pause(

10)

完整**就不放了,在下面的鏈結裡可以找到。

紅色為擬合的曲線,藍色為樣本點

前饋神經網路公式,其中θ(1)11代表第一層第乙個神經元輸出作為隱藏層第乙個神經元輸入的權重,x0(圖中未出現)代表偏置項,是個常數。

tensorflow建立神經網路

部分**

機器學習之神經網路

機器學習是一門致力於研究如何通過計算的手段,利用經驗來改善系統自身的效能。經驗通常以資料的形式存在,因此機器學習所研究的主要內容是關於在計算機上從資料中產生 模型 的演算法,即 學習演算法 有了學習演算法,將經驗資料提供給它,它就能基於這些資料產生模型 當面對新情況時,模型會給我們提供相應的判斷。一...

機器學習之神經網路NN

神經網路 neural network 以人腦中的神經網路為啟發而產生的,最著名對的演算法是backpropagation bp 演算法。可用來解決分類問題,也可用來解決回歸問題 詳情見前言 多層向前神經網路中使用了bp演算法 多層向前神經網路的組成,每一層由單元組成 圖中小圈圈 輸入層 由訓練集的...

python機器學習之神經網路 三

來自 前面兩篇文章都是參考書本神經網路的原理,一步步寫的 這篇博文裡主要學習了如何使用neurolab庫中的函式來實現神經網路的演算法。首先介紹一下neurolab庫的配置 neurolab需要採用python安裝第三方軟體包的方式進行安裝,這裡介紹一種安裝方式 1 進入cmd視窗 2 進入解壓檔案...