之前其實我們已經有用Keras建立好CNN,過程對筆者這種初學者來說還算好上手,但誠如[Day20]所說的,TensorFlow在一些使用方法較Keras複雜,今天我們來稍微研究一下與Keras相異之處囉!重複之處就不會再多做說明。
建立MNIST資料集步驟
如下圖所示:
其實步驟與Keras相同,就不多做說明。
資料預處理
建立共用函數
tf.truncated_normal
初始化weight函數,再加上tf.Variable
建立變數,這也是與Keras最大的差異,請鍵入以下指令:def weight(shape):
return tf.Variable(tf.truncated_normal(shape,stddev=0.1),
name = 'W')
tf.constant
後,再鍵入tf.variable
,如下所示:def bias(shape):
return tf.variable(tf.constant(0.1, shape=shape)
,name='b')
def conv2d(x,W):
return tf.nn.conv2d(x,W,strides=[1,1,1,1],
padding='same')
def_pool_2X2(x):
return tf.nn.max.pool(x, ksize=[1,2,2,1],
strides=[1,2,2,1],
padding='same'
可以發現雖然概念相同,但TensorFlow所需的設定更繁雜,明天再繼續囉!
Reference: 林大貴(2019):TensorFlow+Keras 深度學習人工智慧實務應用。新北市:博碩文化