Keras序貫模型

2021-09-02 20:13:06 字數 3624 閱讀 4911

序貫模型(sequential model)是多個網路層的線性堆疊,也就是」一條路走到黑」。但是不適合網路之間穿插情況或者多輸入多輸出情況。

序貫模型有兩種方式構建網路

2.1簡單的漢堡式疊法

可以通過sequential模型傳遞乙個layer的list來構造序貫模型。

#兩種方式1.漢堡生成

model = sequential([

dense(32,input_dim=784),

activation('relu'),

dense(10),

activation('softmax')

])

#完成網路構建

2.2加菜式構建模型

或者通過.add()方法乙個個將layer加入到模型中

#2.手動加菜

model = sequential()

model.add(dense(32,input_shape=(784,)))

model.add(activation('relu'))

#完成網路構建

from keras.models import sequential

#sequential宣告使用序貫模型

from keras.layers import dense, dropout, activation

#匯入層dropout隨機失活 dense全連線層、activation啟用函式

from keras.optimizers import sgd

#sgd隨機梯度下降

import keras

import numpy as np

x_train = np.random.random((1000, 20))

#隨機訓練樣本,樣本維度20維

y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)

#對映成10個類別

x_test = np.random.random((100, 20))

y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)

model = sequential()

#建立模型

#新增網路層

model.add(dense(64, activation='relu', input_dim=20))

# dense(64)神經元有64個

#input_dim必須與樣本維度對應

#activation啟用函式

model.add(dropout(0.5))#隨機失活

model.add(dense(64, activation='relu'))

model.add(dropout(0.5))

model.add(dense(10, activation='softmax'))

sgd = sgd(lr=0.01, decay=1e-6, momentum=0.8, nesterov=true)#制定優化器引數學習率0.01,動量0.8

model.compile(loss='categorical_crossentropy',

optimizer=sgd,

metrics=['accuracy'])

model.fit(x_train, y_train,

epochs=20,

batch_size=128)

score = model.evaluate(x_test, y_test, batch_size=128)

#結果acc停留在0.1060左右,跑了n次結果都停留在10%左右

#flatten作用是方便後面接全連線層

from keras.layers import conv2d, maxpooling2d

#conv2d構建2d卷積層,maxpooling2d構建池化層

from keras.optimizers import sgd

準備資料

x_train = np.random.random((100, 100, 100, 3))

#100張寬高100,3彩色圖rgb三個顏色通道

y_train = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)

x_test = np.random.random((20, 100, 100, 3))

y_test = keras.utils.to_categorical(np.random.randint(10, size=(20, 1)), num_classes=10)

#模型構建

model = sequential()

model.add(conv2d(32, (3, 3), activation='relu', input_shape=(100, 100, 3)))

model.add(conv2d(32, (3, 3), activation='relu'))

model.add(maxpooling2d(pool_size=(2, 2)))

model.add(dropout(0.25))

model.add(conv2d(64, (3, 3), activation='relu'))

model.add(conv2d(64, (3, 3), activation='relu'))

model.add(maxpooling2d(pool_size=(2, 2)))

model.add(dropout(0.25))

model.add(flatten())

model.add(dense(256, activation='relu'))

model.add(dropout(0.5))

model.add(dense(10, activation='softmax'))

#開始訓練測試

sgd = sgd(lr=0.01, decay=1e-6, momentum=0.9, nesterov=true)

model.compile(loss='categorical_crossentropy', optimizer=sgd)

model.fit(x_train, y_train, batch_size=32, epochs=10)

score = model.evaluate(x_test, y_test, batch_size=32)

Keras 序貫模型Sequential學習筆記

序貫模型是多個網路層的線性堆疊,也就是 一條路走到黑 1 通過sequential構建模型 可以通過向sequential模型傳遞乙個layer的list來構造該模型 匯入序貫模型 from keras.models import sequential 匯入神經網路前向傳播層結構和啟用函式 from...

5 序貫模型細節

keras有兩種型別的模型,序貫模型 sequential 和函式式模型 model 函式式模型應用更為廣泛,序貫模型是函式式模型的一種特殊情況。兩種模型的共同方法 model.summary 列印出模型概況,它實際呼叫的是keras.utils.print summary model.get co...

時空序貫指示模擬和序貫高斯模擬的步驟

一 時空序貫指示模擬 1 每個樣點進行四次指示變換,小於那個閾值取1,否則取0 2 計算四次,得到四個理論變異函式 3 定義時空格網矩陣和隨機路徑 4 隨機取下一格網,對四個指示變數stok 5 概率值內插或外推,得累積概率分布,隨機取一值,作為已知點代入下一點模擬 6 所有時空網格是否完成模擬,是...