【发布时间】:2020-01-11 00:04:40
【问题描述】:
我有一个 MNIST 数据集的神经网络架构如下-
def create_nn():
"""
Function to create NN model for MNIST
classification using 300 100 architecture
"""
model = Sequential()
model.add(l.InputLayer(input_shape = (784, )))
model.add(Flatten())
model.add(Dense(units = 300, activation='relu', kernel_initializer = tf.initializers.GlorotUniform()))
# model.add(l.Dropout(0.2))
model.add(Dense(units = 100, activation='relu', kernel_initializer = tf.initializers.GlorotUniform()))
# model.add(l.Dropout(0.1))
model.add(Dense(units = num_classes, activation='softmax'))
# Compile designed NN-
model.compile(
loss = tf.keras.losses.categorical_crossentropy,
# optimizer = 'adam',
optimizer = tf.keras.optimizers.Adam(lr = 0.001),
metrics = ['accuracy'])
return model
# Insantiate a new NN model instance-
orig_model = create_nn()
# Load original weights from when designed model was initialized-
orig_model.load_weights("300_100_MNIST.h5")
type(orig_model.trainable_weights), len(orig_model.trainable_weights)
# (list, 6)
# Insantiate a new NN model instance-
pruned_model = create_nn()
# Load pruned weights AFTER pruning algorithm was applied to prune NN-
pruned_model.load_weights("300_100_Pruned_Model.h5")
现在,我创建一个列表,在其中根据某些标准处理权重,如下所示-
# List to store extracted weights-
weight_extracted = []
for orig_wts, pruned_wts in zip(orig_model.trainable_weights, pruned_model.trainable_weights):
c = np.where(pruned_wts == 0, pruned_wts, orig_wts)
weight_extracted.append(c)
del c
len(weight_extracted)
# 6
如何使用 numpy 数组“weight_extracted”列表中的权重/偏差将权重加载到上面定义的 NN 中?
谢谢!
【问题讨论】:
-
文档中没有介绍吗?
标签: python numpy tensorflow