(迁移学习)VGG16模型设置全局列表parameters = [ ]

本文介绍了如何使用迁移学习设置VGG16模型的全局参数列表。首先,通过创建与VGG16结构相同的自定义类,然后导入预训练权重到模型中。实例化模型后,全局列表parameters包含了32个层的参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VGG16模型设置全局列表parameters = [ ]

先自己写一个与VGG16结构相同的类,再把下载的训练好的参数导入我们的模型。


# 我们通过对每一层设置trainable=True/False进行了模型微调

class vgg16:

    def __init__(self, imgs):
        self.parameters = []  # 在类的初始化时加入全局列表,将所需共享的参数加入进来
        self.imgs = imgs
        self.conv_layers()
        self.fc_layers()
        self.probs = tf.nn.softmax(self.fc8)  # self.probs表示返回/输出

    def saver(self):
        return tf.train.Saver()

    def maxpool(self, name, input_data):
        out = tf.nn.max_pool(input_data, [1, 2, 2, 1], [1, 2, 2, 1], padding="SAME", name=name)
        # out = tf.nn.maxpool(input_data,[1,2,2,1],[1,2,2,1],padding="SAME",name=name)  # max_pool ?
        # out = tf.nn.max_pool2d(input_data,[1,2,2,1],[1,2,2,1],padding="SAME",name=name)
        return out

    def conv(self, name, input_data, out_channel, trainable=False):  # 参数变动
        in_channel = input_data.get_shape()[-1]
        with tf.variable_scope(name):
            kernel = tf.get_variable("weights", [3, 3, in_channel, out_channel], dtype=tf.float32, trainable=False)
            biases = tf.get_variable("biases", [out_channel], dtype=tf.float32, trainable=False)
            conv_res = tf.nn.conv2d(input_data, kernel, [1, 1, 1, 1], padding="SAME")
            res = tf.nn.bias_add(conv_res, biases)
            out = tf.nn.relu(res, name=name)
        self.parameters += [kernel, biases]  # 将卷积层定义的参数(kernel,biases)加入列表
        return out

    def fc(self, name, input_data, out_channel, trainable=True):
        shape = input_data.get_shape().as_list()
        if len(shape) == 4:
            size = shape[-1] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值