tensorflow入门 自定义模型

前面说了自定义的层,接下来自定义模型,我们以下图为例子

这个模型没啥意义,单纯是为了写代码实现这个模型

首先呢,我们看有几个部分,dense不需要我们实现了,我们就实现Res,为了实现那个*3,我们注意这个res可能需要多个res堆叠。

python 复制代码
class ResBlock(keras.layers.Layer):
    def __init__(self, n_layers, n_neurons, **kwargs):
        super().__init__(**kwargs)
        self.hidden =[keras.layers.Dense(n_neurons,activation='elu',kernel_initializer='he_normal')
                          for _ in range(n_layers)
                      ]
    def call(self, inputs):
        Z = inputs
        for layer in self.hidden:
            Z = layer(Z)
        return inputs + Z

这样我们就能实现一个可以循环的Res了,call是必须的,因为在计算的时候需要它

如果我们写得再详细一点,可能要加入built,如果需要保存和加载模型,我们需要get_congit和save_congit,总之,基本的样子就是如此。

为了防止搞错,解释以下为什么没有使用built,是为了偷懒。

下面我们构建模型的时候,会指定输入的维度,其实再通用的情况下,我们根本不知道输入的维度,built会自动推断输入维度,所有本来应该写个built的,但是睡觉时间到了。

然后我们基于上面的自定义层,实现左边的模型

python 复制代码
def ResModel(keras.Model):
    def __init__(self, out, **kwargs):
        super().__init__(*kwargs)
        self.hidden1 = keras,layers,Dense(30, activation='elu', kernel_initializer='he_normal')
        self.block1 = ResBlock(2,10)
        self.block2 = ResBlock(2,20)
        self.out = keras,layers,Dense(out)
    
    def call(self, inputs):
        Z = self.hidden1(inputs)
        for _ in range(4):
            Z = self.block1(Z)
        Z = self.block2(Z)
        return self.out(Z)

我觉得在此以及无需多言了。睡觉睡觉。

相关推荐
升鲜宝供应链及收银系统源代码服务几秒前
升鲜宝AI助手功能使用流程与数据库关联操作文档(三)---升鲜宝生鲜配送供应链管理系统源代码
人工智能·生鲜配送系统·生鲜物流线路规划·生鲜电商订单系统·生鲜供应链系统·生鲜系统架构设计·生鲜配送系统源代码服务出售
1892280486132 分钟前
NV086固态MT29F16T08EWLCHD8-TES:C
大数据·服务器·人工智能·科技·缓存
databook33 分钟前
用SymPy自动求解三角形构造与全等条件验证
python·数学·动效
古月开发35 分钟前
本地化 AI 论文查重与润色工具部署指南
人工智能·自动化
多年小白1 小时前
【周末消息复盘】2026年6月5日-7日——纳指暴跌1100点,明日A股如何开盘
人工智能·科技股
Sirius Wu1 小时前
Agent Skill能力建设
人工智能·深度学习·机器学习·ai·语言模型·aigc
腾讯云开发者1 小时前
从Agent浪潮到组织变革,共探OpenClaw 时代的安全边界与企业进化
人工智能
弱冠少年1 小时前
anthropics skill-creator入门
人工智能
攻城狮7号1 小时前
ChatGPT 全新 Dreaming 记忆系统详解
人工智能·chatgpt·dreaming 记忆系统·dreaming v3
lunzi_fly1 小时前
【学习笔记】《Python编程 从入门到实践》第6章:字典创建、遍历与嵌套用法详解
python·python 小白学习