Tensorflow构建网络的四种方法

1.使用现有的预训练模型

         一种是线下训练,然后保存模型,线上加载运行。就是常规的模型部署。 一种是使用别人训练好共享出来的模型,加载到自己的业务场景中,适应性调整参数。这个过程美其名曰:迁移学习。如VGG16网络等。

from tensorflow.keras.applications import MobileNetV2
#使用Mobile netV2网络,input_shape是单张图片输入尺寸
#classes是分类数量
base=MobileNetV2(include_top=False, pooling='max',weights="imagenet",input_shape=(100,100,3),classes=12)

2.keras.sequential模式

        就是将各个层按照特定顺序堆叠起来,灵活性差,它不能表示任意的神经网络结构,无法对中间计算得到的变量进行个性化的操作。

import tensorflow as tf

model = tf.keras.models.Sequential()
#需要加什么层,直接加就行
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(900,activation='relu6'))
model.add(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.Dense(360,activation='relu6',kernel_regularizer=tf.keras.regularizers.l2(0.1)))
model.add(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.Dense(100,activation='relu6',kernel_regularizer=tf.keras.regularizers.l2(0.1)))
model.add(tf.keras.layers.Dense(12, activation='softmax'))

3.FunctionalAPI函数建立模型(最常用,可构建复杂网络)

        这种方式就是各个层都是一个函数,有明确的输入和输出,可以对输入和输出进行个性化的操作后,送入下一层,也可以复用。通过函数的叠加就可以实现,一般使用这种方法,将模型封装成一个模型函数

  1. 定义输入net_input=tf.keras.Input()类,设定输入的shape。
  2. 用函数式API构建网络结构,如l1=tf.keras.layers.Flatten()(net_input),最后得到输出层net_output
  3. 创建Model类,并传入输出与输出,如tf.keras.Model(inputs=net_input,outputs=net_output)

4.tf构建模型class

        就是自定义层级结构,最灵活,当然灵活的代价是增加了代码量。自定义层级的class,需要继承父类Layers,TensorFlow2 自定义的层级需要实现3个函数init、buil、call。

init :初始化所有参数,根须需要设定层中的参数,比如输出的维度,卷积核数目和大小。

buil:(只有实现了此方法,才能用compile,否则,需要手写Gradentape的繁琐结构),对所有的可变参数进行定义

call:模型的计算过程,全部放这里

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值