tensorflow 恢复模型部分权重,CNN输出到LSTM

本文档记录了在TensorFlow中如何恢复预训练的VGG16模型的前7层权重,并将第7层输出reshape作为LSTM的输入。通过创建saver并指定恢复的变量,尝试在不冻结权重的情况下继续训练,发现恢复后的模型文件大小显著减小,这可能是因为只恢复了部分权重。在实际操作中遇到了reshape动态尺寸的问题,最终将输入尺寸固定以解决这个问题。
摘要由CSDN通过智能技术生成

一、需求

  1. 语音增强迁移训练时,希望在CNN后面接2层LSTM
  2. 但是后面几层CNN(VGG16)的feature map尺寸太小,怕LSTM学不到东西
  3. 恢复前7层CNN的权重,然后第7层的输出reshape之后作为LSTM的输入
  4. 恢复但不冻结

二、步骤

参考tf.train.saver文档
参考StackOverflow
原网络结构如下:

    for layer_id in range(n_layers):
        n_channels = base_channels * (2 ** (layer_id // blk_size))

        if layer_id == 0:
            net = slim.conv2d(input_speech, num_outputs=n_channels, kernel_size=[1, ksz], stride=[1, 2],
                              activation_fn=lrelu, normalizer_fn=norm_fn, reuse=reuse, scope='loss_conv_%d' % layer_id)
            layers.append(net)
        elif layer_id < n_layers - 1:
            net = slim.conv2d(layers[-1], n_channels, [1, ksz], [1, 2], activation_fn=lrelu, normalizer_fn=norm_fn,
                              reuse=reuse, scope='loss_conv_%d' % layer_id)
            layers.append(net)
        else:
            net = slim.conv2d(layers[-1], n_channels, [1, ksz], activation_fn=lrelu, normalizer_fn=norm_fn,
                              reuse
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值