所谓函数式API就是可以把层当作函数来使用。函数在一般的编程语言中,都会有这个概念。这里,就是将keras里的一些api当作一个函数,具体:

  • 可以直接操作张量tensor

  • 也可以接受张量

  • 可以返回张量

例如void func1(int a)C++/C#等语言的函数形式,有一个返回值,即使返回值值为空,它能够传入参数,即使有的时候也可以不接受任何参数,但是括号得保持,可以对传入的参数进行处理。 网络层的实例是可调用的,它以张量为参数,并且返回一个张量,输入和输出均为张量。所谓的函数式API就是指将网络层像函数一样调用,可以更加自由地对网络层进行个性化设置。本文大概了解一下什么是函数式API,后面的具体案例中会进行使用。

函数式API实例

函数式API的核心思想在于可以调用

import tensorflow as tf
from tensorflow import keras

# 加载Fashion MNIST数据
(train_image, train_label),(test_image, test_label) = tf.keras.datasets.fashion_mnist.load_data()

# 对于图片数据,进行归一化处理
train_image = train_image/255
test_image = test_image/255

# 设置输入
MyInput = keras.Input(shape=(28, 28))
# 通过函数式API来使用
x=keras.layers.Flatten()(MyInput)  # 这个写法的含义就是输入MyInput
x = keras.layers.Dense(32,activation='relu')(x)
x = keras.layers.Dropout(0.5)(x)
x = keras.layers.Dense(64,activation='relu')(x)
output = keras.layers.Dense(10, activation='softmax')(x)
model = keras.Model(inputs = MyInput, outputs = output)

# 编译
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',   #输入数据的类别标签采用独热编码
              metrics = ['acc']
)

# 训练
history = model.fit(train_image, train_label, epochs=10, validation_data=(test_image, test_label)) 

注意,上面的仅仅作为函数式API的演示,参数并不靠谱。

参数值


参考资料:

函数式API及多输入模型的建立-bilibili-作者:瓦力人工智能

函数式API简介


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/kerasFunAPI.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 09 月 12 日
如果觉得我的文章对你有用,请随意赞赏