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