大家好,昨天寫了Dataset的建立與讀取資料的方法,其中讀取資料的方法實作了for loop、take、batch、shuffle,而今天就是要介紹昨天提到的,用不同的層來建立模型。
之前不論是在用Sequential Model或Function API建立模型時,主要使用的方法都是layers.Dense,是用來建構全連接層的方法。另外在建立多輸入模型時還有用到layers.Concatenate,是用來將兩個層串聯。而今天要實作的方法是layers.Conv2d和layers.Flatten,Conv2d是用來建構卷積層的方法、Flatten可以將輸出重塑(reshape)成一維張量,多使用在卷積層和全連接層之間。今天都只會先進行簡單的程式實作,其中的運算原理與用處會在之後才介紹。
首先是用Conv2d建立卷積層:
inputs=keras.Input((256,256,3))
outputs=keras.layers.Conv2D(64, 3)(inputs)
model=keras.Model(inputs,outputs)
在Conv2D方法中我只寫了必需的兩個參數,第一個參數是指卷積核的數量,第二個是指卷積核的大小,設為3表示大小是3*3,剩下的參數會連同之後的運算一同介紹,今天就只先寫這些。
再來是Flatten:
inputs=keras.Input((256,256,3))
h1=keras.layers.Conv2D(64, 3)(inputs)
flatten= keras.layers.Flatten()(h1)
outputs=keras.layers.Dense(1)(flatten)
model=keras.Model(inputs,outputs)
這個模型原先輸入為三維張量,h1的輸出在經過flatten後變為了一維張量,最後輸出層的輸出是一為張量。