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

我使用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模型初始化conv1或conv2的变量.

我该怎么做?

最佳答案 您也可以按照建议使用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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值