"""
以前我們涉及的都是線性問題
現在我們涉及的是非線性問題
什麼是非線性問題?:
計算結果是一條直線的問題叫做線性問題,要麼遞增,要麼遞減
而非線性問題不會走這種極端,它是有乙個過程的變化
""""""
以三好學生的評選規則來引入非線性問題
1.學校還是要評選三好學生,學校已經頒布了三好學生的評選結果,所有家長已經知道了自己孩子是否被評選上三好學生
2.所有家長知道自己孩子的德育分,智育分,體育分三項分數成績。但是不知道總分,這次學校沒有發布總分。
3.學校本次評選三好學生的評選規則是:總分》=95分即為三好學生;計算總分的表達公式仍然是:
總分 = 德育分*60% + 智育分*30% + 體育分*10%,但學校沒有公布這些規則,家長也不知情。
家長們通過神經網路來計算出學校的上述規則
""""""
問題分析:此類問題為二分類問題
何為二分類問題:
可以理解為 根據輸入得到輸出 而輸出的結果 只有兩種結果:0或者1,也就是要麼是三好學生 要麼不是三好學生
""""""
提到:跳變函式或者叫階躍函式
y是xall的乙個函式,即:y = f(xall) 再在可允許的b範圍內做微調即為: y = f(xall)+b
y隨著x的變化並不是一條直線
而是在某個地方某個點產生了乙個跳變,我們稱之為跳變函式
sigmoid函式就是乙個跳變函式,這個函式可以吧任何數字變成0到1範圍之間的數字
sigmoid函式常常用來被神經網路進行二分類
""""""
神經網路模型圖
""""""
實現本模型的**
"""import tensorflow as tf
import random #因為後面要產生比較真實的符合基本情況的隨機資料,用來對神經網路進行訓練,所以這裡匯入這個庫
random.seed() #執行隨機數函式前,呼叫此函式產生新的隨機數種子
x = tf.placeholder(dtype=tf.float32) #輸入值
ytrain = tf.placeholder(dtype=tf.float32) #目標值 : 0 或者 1
w = tf.variable(tf.zeros([3]), dtype=tf.float32) #權值初始化為0
b = tf.variable(80, dtype=tf.float32)
wn = tf.nn.softmax(w) #權值相加和為1
n1 = wn * x # n1節點等於 各項分數權值 乘以 各項分數
n2 = tf.reduce_sum(n1) - b #n2節點等於n1節點的和 也就是最後某個同學的總分數
y = tf.nn.sigmoid(n2) # 最後呼叫sigmoid函式 計算出 y的結果 要麼為0 要麼為1
loss = tf.abs(ytrain-y) #計算誤差率
optimizer = tf.train.rmspropoptimizer(0.1) #調整優化器以0.1學習效率
train = optimizer.minimize(loss) #train物件以最小原則化調整可變引數
sess = tf.session() #會話物件
init = tf.global_variables_initializer() #可變引數的初始化
sess.run(init) #執行初始化函式
"""下面的**是產生相對符合實際情況的隨機資料,便與神經網路的計算提供足夠資料
"""for i in range(50000):
xdata = [int(random.random()*8+93),int(random.random()*8+93),int(random.random()*8+93)] #隨機產生三個輸入值,向量,[93,100)
xall = xdata[0]*0.6 + xdata[1]*0.3 + xdata[2]*0.1
if xall >= 95:
ytraindata = 1
else:
ytraindata = 0;
result = sess.run([train, x, ytrain, wn, b, n2, y, loss], feed_dict=)
print(result)
xdata = [int(random.random()*41+60),int(random.random()*41+60),int(random.random()*41+60)] #產生【60,100)的隨機數
xall = xdata[0]*0.6 + xdata[1]*0.3 + xdata[2]*0.1
if xall >= 95:
ytraindata = 1
else:
ytraindata = 0
result = sess.run([train, x, ytrain,wn, b, n2, y, loss], feed_dict=)
print(result)
"""最後相當於產生了兩組隨機數用來測試帶入神經網路**進行計算
"""
神經網路解決二分類問題
import tensorflow as tf from numpy.random import randomstate batch size 8 w1 tf.variable tf.random normal 2,3 stddev 1,seed 1 w2 tf.variable tf.random...
基於神經網路的二分類問題
在之前的文章中,介紹了神經網路的概念和演算法思想,甚至給出了公式推導。但依然沒有掌握神經網路的精髓,於是打算進一步學習就在網上 了吳恩達大佬的 神經網路和深度學習 這門課程,覺得收穫很大。目前只學習了單個神經元的原理及應用,下面簡單總結一下。1.損失函式的定義 與之前介紹的單個神經元的工作原理不同之...
神經網路,如何解決非線性問題
如果您還記得特徵組合這一單元的話,就會發現以下分類問題屬於非線性問題 圖 1.非線性分類問題。非線性 意味著您無法使用形式為 b w1x1 w2x2 的模型準確 標籤。也就是說,決策面 不是直線。之前,我們了解了對非線性問題進行建模的一種可行方法 特徵組合。現在,請考慮以下資料集 圖 2.更難的非線...