深度學習 用神經網路解決非線性問題

2021-09-05 12:50:47 字數 2003 閱讀 1300

已知德智育三項成績,總分大於等於95即可當選三好學生。用1代表是,用0代表否。線性問題是可以傳遞的,非線性問題則是所謂的「一票否決制」,如果在一串連續的關係中有乙個非線性關係出現,一般來說,整個問題都將成為非線性的問題。

啟用函式sigmoid:將線性化的關係轉換成非線性化關係的函式,可以把任何數字變成乙個0到1範圍之間的數字。

import tensorflow as tf

import random

import numpy as np

random.seed()

# 批量生成隨機訓練資料

rowcount = 5

# np.full函式的作用是生成乙個多維陣列,並用預定的值來填充

xdata = np.full(shape=(rowcount, 3), fill_value=0, dtype=np.float32)

ytraindata = np.full(shape=rowcount, fill_value=0, dtype=np.float32)

goodcount = 0

# 生成隨機訓練資料的迴圈

for i in range(rowcount):

xdata[i][0] = int(random.random() * 11 + 90)

xdata[i][1] = int(random.random() * 11 + 90)

xdata[i][2] = int(random.random() * 11 + 90)

xall = xdata[i][0] * 0.6 + xdata[i][1] * 0.3 + xdata[i][2] * 0.1

if xall >= 95:

ytraindata[i] = 1

goodcount = goodcount + 1

else:

ytraindata[i] = 0

print("xdata=%s" % xdata)

print("ytraindata=%s" % ytraindata)

print("goodcount=%d" % goodcount)

x = tf.placeholder(shape=[3], dtype=tf.float32)

# ytrain因為只是乙個普通數字,不是向量,如果要給它乙個形態的話,可以用乙個空的方括號""來表示

ytrain = tf.placeholder(shape=, dtype=tf.float32)

# tf.zeros([3]返回乙個全值為0的3維向量

w = tf.variable(tf.zeros([3]), dtype=tf.float32)

b = tf.variable(80, dtype=tf.float32)

wn = tf.nn.softmax(w)

n1 = x*w

n2 = tf.reduce_sum(n1) - b

# tf.reduce_sum函式的作用是把作為它的引數的向量中的所有維度的值相加求和

神經網路,如何解決非線性問題

如果您還記得特徵組合這一單元的話,就會發現以下分類問題屬於非線性問題 圖 1.非線性分類問題。非線性 意味著您無法使用形式為 b w1x1 w2x2 的模型準確 標籤。也就是說,決策面 不是直線。之前,我們了解了對非線性問題進行建模的一種可行方法 特徵組合。現在,請考慮以下資料集 圖 2.更難的非線...

神經網路演算法 解決非線性分類複雜問題

把神經元模擬成乙個邏輯單元,在神經網路的模型中,神經元收到來自n個其他神經元傳遞過來的輸入訊號,這些輸入訊號通過帶權重的連線進行傳遞,神經元收到的總輸入值將與神經元的閾值進行比較,然後通過啟用函式 activation funciton 處理以產生神經元的輸出。把許多個這樣的神經元按一定的層次結構連...

機器學習,深度學習,神經網路,深度神經網路

先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...