TensorFlow Lite 支持 keras 函数 Flatten() 吗?

问题描述 投票:0回答:1

我正在构建自己的 CNN,并尝试根据“适用于微控制器的 TensorFlow Lite”教程和 TinyML 书籍将其放在 Disco-f746ng 上。我知道支持的tensorflow-keras函数可以在这里找到:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/all_ops_resolver.cc

Flatten()
功能似乎没有列出。这让我很恼火,因为它是一个非常基本的函数,所以我想它可能只是在 all_ops_resolver 中有一个不同的名称。 我仅使用那里列出的函数以及
Flatten()
函数。当我用自己的模型运行测试时,无论我分配多少空间,我总是会遇到分段错误。所以我想问一下TensorFlow Lite是否支持
Flatten()
函数?

这是我用于创建 CNN 的 Python 代码:

model = models.Sequential()
model.add(layers.Conv2D(16, (3, 3), activation='relu', input_shape=(36, 36, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(36, 36, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu', input_shape=(36, 36, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(8, activation='softmax'))
model.add(layers.Dense(2))

model.summary()

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
python tensorflow tensorflow-lite tinyml
1个回答
0
投票

好吧,我想我现在明白了。我还有另一个导致分段错误的问题,但我现在解决了。之后我准备检查是否支持

Flatten()
有效!

将以下内置函数添加到微操作解析器时,上面的 CNN 模型代码将起作用:

tflite::MicroMutableOpResolver<5> micro_op_resolver;

micro_op_resolver.AddConv2D();
micro_ou_resolver.AddFullyConnected();
micro_op_resolver.AddMaxPool2D();
micro_op_resolver.AddSoftmax();
micro_op_resolver.AddReshape();

根据我的反复试验方法,添加

RESHAPE()
是能够使用
Flatten()

所必需的
© www.soinside.com 2019 - 2024. All rights reserved.