arduino nano 33 ble 上的 tensorflow lite:没有找到内置操作码“SHAPE”版本“1”的操作

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

我将 Tensorflow lite 2.1.0-ALPHA-PRECOMPILED 用于带有标头的 arduino nano 33 ble。

模型定义

model = tf.keras.Sequential()
model.add(layers.Dense(16,activation='relu', input_shape=(seq_len,12,1)))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(1, activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(1, activation='sigmoid'))

模型总结

Model: "sequential_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_4 (Dense)             (None, 100, 12, 16)       32        
                                                                 
 dense_5 (Dense)             (None, 100, 12, 16)       272       
                                                                 
 dense_6 (Dense)             (None, 100, 12, 1)        17        
                                                                 
 flatten_1 (Flatten)         (None, 1200)              0         
                                                                 
 dense_7 (Dense)             (None, 1)                 1201      
                                                                 
=================================================================
Total params: 1,522
Trainable params: 1,522
Non-trainable params: 0
_________________________________________________________________

然后我转换为 tflite

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]

tflite_model = converter.convert()

open('saved_model/ver4.tflite','wb').write(tflite_model)

我加入了arduino

static tflite::MicroMutableOpResolver<2> micro_op_resolver;  // NOLINT
micro_op_resolver.AddBuiltin(tflite::BuiltinOperator_FULLY_CONNECTED,
                              tflite::ops::micro::Register_FULLY_CONNECTED());
micro_op_resolver.AddBuiltin(tflite::BuiltinOperator_RESHAPE,
                              tflite::ops::micro::Register_RESHAPE());

在这种情况下我得到一个错误:

Didn't find op for builtin opcode 'SHAPE' version '1'

Failed to get registration from op code SHAPE
 
Failed starting model allocation.

我试着包括

micro_op_resolver.AddBuiltin(tflite::BuiltinOperator_SHAPE,
                              tflite::ops::micro::Register_SHAPE());

但是收到错误消息

Compilation error: 'Register_SHAPE' is not a member of 'tflite::ops::micro'

我也试过了

static tflite::AllOpsResolver resolver;

但也没有用。

Didn't find op for builtin opcode 'SHAPE' version '1'

Failed to get registration from op code SHAPE
 
Failed starting model allocation.

像这样

python-3.x arduino tensorflow-lite arduino-ide arduino-c++
© www.soinside.com 2019 - 2024. All rights reserved.