這是人工智能入門課,將用八次課幫你梳理人工智能概念、機(jī)器學(xué)習(xí)方法、深度學(xué)習(xí)框架。如果你還不知道什么是人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí),歡迎進(jìn)來(lái)學(xué)習(xí)交流。結(jié)課時(shí),你將會(huì)用Python搭建人工神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)特定物體的識(shí)別。一起編碼感受人工智能 機(jī)器學(xué)習(xí) 深度學(xué)習(xí)吧!
什么是機(jī)器學(xué)習(xí)
如果一個(gè)程序可在任務(wù)T上,隨經(jīng)驗(yàn)E的增加,效果P隨之增加,則認(rèn)為這個(gè)程序可以從經(jīng)驗(yàn)中學(xué)習(xí)。
Tensorflow
基于Tensorflow的神經(jīng)網(wǎng)絡(luò)
用張量表示數(shù)據(jù),用計(jì)算圖搭建神經(jīng)網(wǎng)絡(luò),用會(huì)話執(zhí)行計(jì)算圖,優(yōu)化線上的權(quán)重(參數(shù)),得到模型。
張量、計(jì)算圖、會(huì)話和簡(jiǎn)單的Tensorflow例子
import tensorflow as tf a = tf.constant([1.0, 2.0])b = tf.constant([3.0, 4.0])result = a + bprint(result)with tf.Session() as sess: print(sess.run(result))
結(jié)果為:
Tensor("add_3:0", shape=(2,), dtype=float32)[4. 6.]再有
import tensorflow as tf a = tf.constant([[1.0, 2.0]])b = tf.constant([[3.0], [4.0]])result = tf.matmul(a, b)print(result)with tf.Session() as sess: print(sess.run(result))
結(jié)果為:
Tensor("MatMul:0", shape=(1, 1), dtype=float32)[[11.]]張量(tensor):多維數(shù)組(列表) 階:張量的維數(shù)
計(jì)算圖(Graph):搭建神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程,只搭建不運(yùn)算
會(huì)話(Session):執(zhí)行計(jì)算圖中的節(jié)點(diǎn)運(yùn)算
參數(shù) tf.Variable
w = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))
stdev 標(biāo)準(zhǔn)差; mean 均值; seed 隨機(jī)數(shù)種子;
tf.random_normal 表示 正態(tài)分布
tf.truncated_normal() 去掉過(guò)大偏離點(diǎn)的正態(tài)分布
tf.random_uniform() 平均分布
變量的初始化
init_op = tf.global_variables_initializer()sess.run(init_op)
tf.placeholder占位,在sese.run中用feed_dict喂數(shù)據(jù)
x = tf.placeholder(tf.float32, shape=(1,2))sess.run(y, feed_dict={x:[[0.5,0.6]]})x = tf.placeholder(tf.float32, shape=(None,2))sess.run(y, feed_dict={x:[[0.1,0.2], [0.3,0.4], [0.5,0.6]]})神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)過(guò)程
準(zhǔn)備數(shù)據(jù)集,提取特征,作為輸入喂給神經(jīng)網(wǎng)絡(luò)
搭建NN結(jié)構(gòu),從輸入到輸出(先搭建計(jì)算圖,再用會(huì)話執(zhí)行)前向傳播算法計(jì)算輸出
大量特征數(shù)據(jù)喂給NN,迭代優(yōu)化NN參數(shù),反向傳播算法優(yōu)化參數(shù)訓(xùn)練模型
將訓(xùn)練好的模型投入實(shí)際使用
兩層簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)示例
import tensorflow as tf
x = tf.placeholder(tf.float32, shape=(None,2))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)with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
print(sess.run(y, feed_dict={x:[[0.7,0.5], [0.2,0.3], [0.3,0.4], [0.4,0.5]]}))
print(sess.run(w1))
print(sess.run(w2))