这篇文章有一定借鉴意义
https://panjinquan.blog.youkuaiyun.com/article/details/86712328
一共就这4种,足够,别瞎想
模型构建4种方法
1 使用现有的预训练模型
keras.applications.vgg16.VGG16(include_top=True, weights='imagenet',
input_tensor=None, input_shape=None,
pooling=None,
classes=1000)
model = tf.keras.applications.MobileNetV2(weights=None, classes=5)
https://mattzheng.blog.youkuaiyun.com/article/details/72859145
2 Keras Sequential模式建立模型(不推荐用,跳接结构不行)
2.1 Sequential内置


参考:https://www.bilibili.com/video/BV1B7411L7Qt?p=33

2.2 Sequential外置
def mnist_cnn(input_shape):
'''
构建一个CNN网络模型
:param input_shape: 指定输入维度
:return:
'''
model=keras.Sequential()
model.add(keras.layers.Conv2D(filters=32,kernel_size = 5,strides = (1,1),
padding = 'same',activation = tf.nn.relu,input_shape = input_shape))
model.add(keras.layers.MaxPool2D(pool_size=(2,2), strides = (2,2), padding = 'valid'))
model.add(keras.layers.Conv2D(filters=64,kernel_size = 3,strides = (1,1),padding = 'same',activation = tf.nn.relu))
model.add(keras.layers.MaxPool2D(pool_size=(2,2), strides = (2,2), padding = 'valid'))
model.add(keras.layers.Dropout(0.25))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(units=128,activation = tf.nn.relu))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(units=10,activation = tf.nn.softmax))
return model
3 Functional API 函数api建立模型(最常用,复杂网络)
多输入模型,
多输出模型,
具有共享层的模型(同一层被调用多次),
具有非序列数据流的模型(例如,剩余连接)
这种方式就是各个层都是一个函数,通过函数的叠加就可以实现,一般使用这种方法,将模型封装成一个模型函数。
inputs = tf.keras.Input(shape=(28, 28, 1))
x = tf.keras.layers.Flatten()(inputs)
x = tf.keras.layers.Dense(units=100, activation=tf.nn.relu)(x)
x = tf.keras.layers.Dense(units=10)(x)
outputs = tf.keras.layers.Softmax()(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
看下面这个FCN构建,结合了迁移学习和函数api建立模型
https://blog.youkuaiyun.com/xiaotiig/article/details/110355547
下面这个resnet网络结构的实现,也是用的这种方法实现的,因为有很多的残差结构
https://blog.youkuaiyun.com/xiaotiig/article/details/117673634
4 tf构建模型Class
4.1 初识

实例化层然后调用方法,两步
init里实例化各种方法
call调用各种方法

继承 tf.keras.Model 后,我们同时可以使用父类的若干方法和属性,例如在实例化类 model = Model() 后,可以通过 model.variables 这一属性直接获得模型中的所有变量,免去我们一个个显式指定变量的麻烦。
对于上面的 y_pred = w * X + b ,我们可以通过模型类的方式编写如下:这里,我们没有显式地声明a 和 b 两个变量并写出 y_pred = w x X + b 这一线性变换,而是建立了一个继承了 tf.keras.Model 的模型类 Linear 。这个类在初始化部分实例化了一个 全连接层 ( tf.keras.layers.Dense ),并在 call 方法中对这个层进行调用,实现了线性变换的计算。
import tensorflow as tf
X = tf.constant([[1.0, 2.0, 3.0],

本文详细介绍了四种深度学习模型构建方法:预训练模型使用、Sequential模式、Functional API以及自定义Class。重点讲解了Unet模型的函数式和类实现,并提供了相关代码示例。此外,还提到了深度学习模型的可视化和常用层的总结。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



