keras关于model的小总结

这篇博客介绍了Keras中的两种模型类型:顺序模型(Sequential)和函数式模型(Model)。顺序模型适合简单的层堆叠,而函数式模型则允许更灵活的网络构造。通过示例代码,解释了如何使用Sequential模型进行创建、编译、训练、评估和预测操作。函数式模型则展示了如何通过Input和Dense层构建网络,并进行相应的训练和预测流程。博客强调了Keras在构建深度学习模型时的易用性。

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

进来看了看keras, 比tf友好的多啊,总结下:
Keras有两种类型的模型,顺序模型(Sequential)和泛型模型(Model)
首先比较简单的顺序型

Sequential模型接口

代码示例

model = Sequential()
model.add(Dense(32, input_shape=(500,)))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
      loss='categorical_crossentropy',
      metrics=['accuracy'])
model.fit( x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None)
score = model.evaluate(x_test, y_test, batch_size=32)
model.predict(x, batch_size=32, verbose=0)
model.predict_classes( x, batch_size=32, verbose=1)
model.predict_proba(x, batch_size=32, verbose=1)
Sequential() 代表类的初始化;
Dense() 代表全连接层,参数32表示本层有32个神经元,然后接relu激活层,由于是第一层,计算机不知道应该是以多少维增加,因此,后面添加输入维度数100。这一层需要训练100*32+32个参数。
model.add() 相当于把模型一层层拼接起来。
model.compile()函数中输入优化器,损失函数等信息
model.fit()中传入需要训练的数据x,y以及训练的批次等信息,开始训练
model.evaluate()用来评估模型的误差函数的返回值是预测值的numpy array
model.predict_classes:本函数按batch产生输入数据的类别预测结果;
model.predict_proba:本函数按batch产生输入数据属于各个类别的概率

model模型接口

函数式模型基本属性与训练流程
一般需要:
1、model.layers,添加层信息;
2、model.compile,模型训练的BP模式设置;
3、model.fit,模型训练参数设置 + 训练;
4、evaluate,模型评估;
5、predict 模型预测

from keras.models import Model
from keras.layers import Input, Dense

a = Input(shape=(32,))
b = Dense(32)(a)
model = Model(input=a, output=b)
model.compile(optimizer, loss, metrics=[], loss_weights=None, sample_weight_mode=None)
model.fit(x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None)
model.evaluate(x, y, batch_size=32, verbose=1, sample_weight=None)
model.predict(x, batch_size=32, verbose=0)

例子

from keras.layers import Input, Dense
from keras.models import Model

# This returns a tensor
inputs = Input(shape=(784,))

# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
# 输入inputs,输出x
# (inputs)代表输入
x = Dense(64, activation='relu')(x)
# 输入x,输出x
predictions = Dense(10, activation='softmax')(x)
# 输入x,输出分类

# This creates a model that includes
# the Input layer and three Dense layers
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
model.fit(data, labels)  # starts training

<think>好的,用户的问题是关于如何下载或保存tf.keras.Model的预训练模型或完整代码实现。我需要结合提供的引用信息来回答这个问题。 首先,我需要回想用户提供的引用内容。引用[3]提到预训练模型存放在'tensorflow.python.keras.applications'目录下,并提到了TensorFlow 1.10中的模型。但可能用户使用的是较新版本,所以可能需要更新信息。引用[4]指出tf.keras是TensorFlow 2.0的高阶API,官方推荐使用,所以应该以2.0的方法为主。 关于下载预训练模型,通常tf.keras.applications模块提供了加载预训练模型的功能,例如ResNet、VGG等。用户可能想通过这个模块直接下载模型权重。例如,使用Applications中的模型类并设置weights='imagenet'会自动下载预训练权重。需要告诉用户如何导入这些模型,并下载权重。 然后是保存模型,引用[2]提到了使用model.save()或tf.keras.models.save_model()来保存整个模型,包括架构、权重和优化器状态。而加载模型则是用tf.keras.models.load_model(),如引用[1]所示。需要分步骤说明保存和加载的方法。 另外,用户可能还需要知道如何保存代码实现,即模型的架构。这时可以使用model.to_json()或model.get_config()来保存模型结构,再结合保存权重的方法,这样用户就可以在之后重新构建模型。需要提到这两种方式,并给出示例代码。 还需要考虑用户可能的需求,比如只保存权重,或者保存整个模型以便部署。要区分这些情况,给出不同的方法,如save_weights和load_weights,以及保存为SavedModel格式或HDF5格式的区别。 最后,生成相关问题,可能需要包括如何加载预训练模型、保存结构的区别、使用预训练模型进行迁移学习等。 检查是否有遗漏的引用信息,比如引用[4]强调了tf.keras的重要性,应该在回答中提到官方推荐的方法。同时,确保所有提到的函数和模块都是正确的,语法符合LaTeX要求,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能公式较少,主要关注代码块和引用。 总结回答的结构:分下载预训练模型、保存模型、保存代码实现三个部分,每个部分给出具体方法和代码示例,并引用对应的引用标记。最后生成相关问题。</think>以下是下载和保存$tf.keras.Model$模型的具体方法,包含预训练模型获取和完整代码实现方案: ### 一、下载预训练模型 1. **通过Applications模块加载** ```python from tensorflow.keras.applications import ResNet50 # weights='imagenet'会自动下载预训练权重 model = ResNet50(weights='imagenet') # 支持VGG16/19, MobileNet等[^3] ``` 2. **手动下载权重文件** ```python model.load_weights('./path/to/weights.h5') # 需提前下载权重文件 ``` ### 二、保存完整模型 1. **保存为HDF5格式(含结构+权重)** ```python model.save('full_model.h5') # 包含架构/权重/优化器状态[^2] ``` 2. **保存为SavedModel格式(推荐)** ```python tf.keras.models.save_model(model, 'saved_model/') # TensorFlow标准格式[^2] ``` 3. **仅保存权重** ```python model.save_weights('model_weights.h5') # 需配合模型结构代码使用 ``` ### 三、保存代码实现 1. **导出模型结构** ```python json_config = model.to_json() # 生成JSON格式结构描述 with open('model_config.json', 'w') as f: f.write(json_config) ``` 2. **通过函数式API重建** ```python from tensorflow.keras.models import model_from_json reconstructed_model = model_from_json(json_config) reconstructed_model.load_weights('model_weights.h5') ``` $$ \text{模型保存流程示意图} $$ $$ \text{训练模型} \rightarrow \text{选择保存格式} \rightarrow \text{持久化存储} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值