keras提取每一層的系數


keras中提取每一層的系數

建立一個keras模型

import keras
from keras.models import Model
from keras.layers import Input, Dense
from keras.layers.convolutional import Conv2D
from keras.layers.pooling import MaxPool2D
from keras.layers.normalization import BatchNormalization
import numpy as np

mnist_input = Input(shape=(28, 28, 1), name='input')

conv1 = Conv2D(128, kernel_size=4, activation='relu', name='conv1')(mnist_input)
bn1 = BatchNormalization()(conv1)
pool1 = MaxPool2D(pool_size=(2, 2), name='pool1')(bn1)

conv2 = Conv2D(64, kernel_size=4, activation='relu', name='conv2')(pool1)
bn2 = BatchNormalization()(conv2)
pool2 = MaxPool2D(pool_size=(2, 2), name='pool2')(bn2)

hidden1 = Dense(64, activation='relu', name='hidden1')(pool2)
output = Dense(10, activation='softmax', name='output')(hidden1)
model = Model(inputs=mnist_input, outputs=output)

print(model.summary())

返回所有層的權重系數,並保存成numpy array

weights = np.array(model.get_weights())
print(weights[0].shape)
for i in model.get_weights():
    print(i.shape)

得到具體某一層的權重系數

對於BN層,layer.get_weights()返回一個list,為[gamma, beta, mean, std]四個array, 見stackoverflow

對於卷積層和全連接層,layer.get_weights()返回一個list,為[weight, bias]兩個array

for j in model.layers:    # 得到所有層的名稱
    print(j.name)

print(model.get_layer('batch_normalization_1').get_weights())      # 根據層的名稱索引到具體的層,然后得到權重系數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM