搭建乙個簡單的卷積神經網路

2021-09-27 13:18:17 字數 1932 閱讀 4240

神經網路的基本組成單元是神經元,在數學上的神經元模型是和在生物學上的神經細胞對應的。人工神經網路理論是用神經元這種抽象的數學模型來描述客觀世界的生物細胞的。

例如隨機產生32組生產出的零件的體積和重量,訓練3000輪,每500輪輸出一次損失函式

1、匯入模型,生成模擬資料集

import tensorflow as tf

import numpy as np

batch_size=8

seed=23455

2、基於seed產生隨機數

rng=np.random.ramdomstate(seed)

3、隨機數返回32行2列的矩陣表示32組,體積和重量,作為輸入資料集

x=rng.rand(32,2)

4、從x這個32行2列的矩陣中,取出一行,判斷如果和小於1給y賦值1,如果和不小於1給y賦值為0,作為輸入資料標籤

y=[[int(x0+x1<1)] for(x0,x1) in x]

print 「x:\n」,x

print 「y:\n」,y

5、定義神經網路的輸入、引數和輸出,定義前向傳播過程

x=tf.placeholder(tf.float32,shape=(none,2))#2表示每組有兩個

y_=tf.placeholder(tf.float32,shape=(none,1))

w1=tf.variable(tf.random_normal([2,3],stddev=1,seed=1))

w2=tf.variable(tf.random_normal([3,1],stddev=1,seed=1))

a=tf.matmul(x,w1)

y=tf.matmul(a,w2)

6、定義損失函式及反向傳播法

loss=tf.reduce_mean(tf.square(y-y_))

train_step=tf.train.adamtoptinizer(0001),minimiaze(loss)

7、生成會話,訓練steps輪

with tf.session() as sess:

init_op=tf.global_variables_initializer()

sess.run(init_op)

#輸出(未經訓練)引數取值

print"w1:\n",sess.run(w1)

print"w2:\n",sess.run(w2)

print"\n"

#訓練模型

steps=3000

for i in range(steps):

start=(i*batch_size)%32

end=start+batch_size

sess.run(train_step,feed_dict=)

if i%500==0:

total_loss=sess.run(loss,feed_dict=)

print(「after %d train steps),loss on all data is %g」%(i,total_loss)

#訓練後的引數取值

print"\n"

print"w1:\n",sess.run(w1)

print"w2:\n",sess.run(w2)

總共訓練3000輪,每輪從x的資料集和y的標籤中抽取相對應的從start開始到end結束某個特徵值和標籤餵入神經網路,用sess.run求出loss,每500輪列印一次

搭建乙個簡單的神經網路

def add layer 最基礎的四個引數 輸入值,輸入的大小,輸出的大小和激勵函式,激勵函式可以自己新增,也可以不使用激勵函式。def add layer inputs,in size,out size,activation function none 接下來我們定義weight和biases ...

搭建乙個簡單的神經網路

搭建乙個簡單二分類神經網路。乙個簡單的三層網路,包括輸入層,隱層,輸出層。反向傳播迭代更新。軟體 pycharm python version 3.7 import numpy as np class neuralnetwork def init self pass 實現sigmode函式,同時通過...

卷積神經網路 有趣的卷積神經網路

一 前言 最近一直在研究深度學習,聯想起之前所學,感嘆數學是一門樸素而神奇的科學。f g m1 m2 r 萬有引力描述了宇宙星河運轉的規律,e mc 描述了恆星發光的奧秘,v h d哈勃定律描述了宇宙膨脹的奧秘,自然界的大部分現象和規律都可以用數學函式來描述,也就是可以求得乙個函式。神經網路 簡單又...