gpt4 book ai didi

python - 如何使用现有模型的值初始化 slim.conv2d() 中的权重

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:30 24 4
gpt4 key购买 nike

我使用 slim.conv2d 设置 VGG-net

with slim.arg_scope([slim.conv2d, slim.max_pool2d], padding='SAME'):
conv1_1 = slim.conv2d(img, 64, [3, 3], scope='conv1')
conv1_2 = slim.conv2d(conv1_1, 64, [3, 3], scope='conv1_1')
pool1 = slim.max_pool2d(conv1_2, [2, 2], 2, scope='pool1_2')

conv2_1 = slim.conv2d(pool1, 128, [3, 3], 1, scope='conv2_1')
conv2_2 = slim.conv2d(conv2_1, 128, [3, 3], 1, scope='conv2_2')
pool2 = slim.max_pool2d(conv2_2, [2, 2], 2, scope='pool2')

conv3_1 = slim.conv2d(pool2, 256, [3, 3], 1, scope='conv3_1')
conv3_2 = slim.conv2d(conv3_1, 256, [3, 3], 1, scope='conv3_2')
conv3_3 = slim.conv2d(conv3_2, 256, [3, 3], 1, scope='conv3_3')
pool3 = slim.max_pool2d(conv3_3, [2, 2], 2, scope='pool3')

conv4_1 = slim.conv2d(pool3, 512, [3, 3], scope='conv4_1')
# print conv4_1.shape
conv4_2 = slim.conv2d(conv4_1, 512, [3, 3], scope='conv4_2')
conv4_3 = slim.conv2d(conv4_2, 512, [3, 3], scope='conv4_3') # 38

如果我想从现有的 VGG 模型中初始化 conv1conv2 的变量。

我该怎么做?

最佳答案

您也可以按照此处的建议使用 assign_from_values: Github - Initialize layers.convolution2d from numpy array

sess = tf.Session()
with sess.as_default():

init = tf.global_variables_initializer()
sess.run(init)

path = pathlib.Path('./assets/classifier_weights.npz')
if(path.is_file()):
print("Initilize Weights from Numpy Array")
init_weights = np.load(path)
assign_op, feed_dict_init = slim.assign_from_values({
'conv1/weights' : init_weights['conv1_w'],
})
sess.run(assign_op, feed_dict_init)

关于python - 如何使用现有模型的值初始化 slim.conv2d() 中的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com