tensorflow-lite - TensorFlow Lite 是否支持 keras 函数 Flatten()?
问题描述
我正在构建自己的 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()
功能。当我使用自己的模型运行测试时,无论分配多少空间,我总是会遇到分段错误。这就是为什么我想问一下Flatten()
TensorFlow Lite是否支持该功能?
这是我创建 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'])
解决方案
好的,我想我现在想通了。我遇到了另一个导致分段错误的问题,但我现在解决了。之后我准备检查是否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()
推荐阅读
- .net-core - DbCommandInterceptor 中的依赖注入
- oracle - 如何将托管在云中的 Oracle DB 与 MS Azure Logic 应用程序连接起来
- php - 我如何在 PHP 中放置 ips 地址列表而不覆盖?
- c# - 尝试为 WCF 配置自定义 HTTP 连接时收到授权异常
- sql - 生成主键
- reactjs - 为什么我的 React useState 不更新我的组件?
- c++ - 我怎样才能使布局匹配它的内容?
- javascript - iOS上的日文假名键盘在输入反应js上的大写英文字母时无法正常工作
- node.js - 可以使用 Node 以编程方式删除 Google Cloud Tasks 吗?
- python - 即使 df.keys() 显示列名,在 Pandas 中删除列显示“未在轴中找到”