Keras构建神经网络的3种方法

构建Keras模型的3种方法

有三种方法可以在TensorFlow中构建Keras模型:

Sequential API:当你试图使用单个输入、输出和层分支构建简单模型时,Sequential API是最好的方法。对于想快速学习的新手来说,这是一个很好的选择。

Functional API:函数API是构建Keras模型最流行的方法。它可以完成Sequential API所能做的一切。此外,它允许多个输入、多个输出、分支和层共享。它是一种简洁易用的方法,并且仍然允许很好的定制灵活性。

模型子类化:模型子类化是为需要完全控制模型、层和训练过程的高级开发人员设计的。你需要创建一个定义模型的自定义类,而且你可能不需要它来执行日常任务。但是,如果你是一个有实验需求的研究人员,那么模型子类化可能是最好的选择,因为它会给你所有你需要的灵活性。

Sequential API

在Sequential API中,我们需要tf.keras.Models模块。我们可以简单地将下面的所有层作为一个单独的层来传递。如你所见,这很简单。

model = Sequential([
Flatten(input_shape=(28, 28)),
Dense(256,‘relu’),
Dense(10, “softmax”),
])

Functional API

对于Functional API,我们需要单独定义我们的输入。然后,我们需要创建一个输出对象,同时创建所有层,这些层相互关联并与输出相关联。最后,我们创建一个接受输入和输出作为参数的模型对象。代码仍然非常干净,但是我们在Functional API中有了更大的灵活性。

inputs = Input(shape=(28, 28))
x = Flatten()(inputs)
x = Dense(256, “relu”)(x)
outputs = Dense(10, “softmax”)(x)

model = Model(inputs=inputs, outputs=outputs, name=“mnist_model”)

模型子类化

让我们继续讨论模型子类化。在模型子类化中,我们从创建一个扩展类基于tf.keras.Model 。模型子类化有两个关键功能:

init__函数充当构造函数。多亏了__init,我们可以初始化模型的属性(例如,layer)。super调用父构造函数( tf.keras.Model中的构造函数)self用于引用实例属性。
call function是在定义层之后定义操作的地方。
为了使用模型子类化来构建同一个模型,我们需要编写更多的代码,如下所示:

class CustomModel(tf.keras.Model):

def init(self, **kwargs):
super(CustomModel, self).init(**kwargs)
self.layer_1 = Flatten()
self.layer_2 = Dense(256, “relu”)
self.layer_3 = Dense(10, “softmax”)

def call(self, inputs):
x = self.layer_1(inputs)
x = self.layer_2(x)
x = self.layer_3(x)
return x

model = CustomModel(name=‘mnist_model’)

模型训练

现在你可以用三种不同的方法创建同一个模型,你可以选择其中任何一个,构建模型,并运行下面的代码。

model.compile(optimizer=‘adam’,
loss=‘sparse_categorical_crossentropy’,
metrics=[‘accuracy’])

model.fit(x=x_train,y=y_train, epochs=10)

model.evaluate(x_test, y_test)

参考:https://www.cnblogs.com/panchuangai/p/13767645.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI强仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值