返回

python——arduino nano 33 BLE 上的 tensorflow lite:找不到内置操作码“EXPAND_DIMS”版本“1”的操作

发布时间:2022-03-08 14:46:48 353
# node.js

我使用Tensorflow lite 2.1.1-ALPHA-PRECOMPILED for arduino nano 33,并带有标题

进口

import numpy as np
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense, Dropout, Conv1D, MaxPooling1D

模型定义

def get_model(n_timesteps, n_features, n_outputs): 
    model = Sequential()
    model.add(Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(n_timesteps,n_features)))
    model.add(Conv1D(filters=32, kernel_size=3, activation='relu'))
    model.add(Dropout(0.5))
    model.add(MaxPooling1D(pool_size=2))
    model.add(Conv1D(filters=16, kernel_size=5, activation='relu'))
    model.add(MaxPooling1D(pool_size=2))
    model.add(Flatten())  
    model.add(Dense(n_outputs, activation='softmax')) 
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy', tf.keras.metrics.Precision()])
    # fit network
    return model 

model=get_model(128,6,num_class=4)

模型摘要

enter image description here

TF Lite转换器工作,但添加expandsdims操作

# Convert the model to the TensorFlow Lite format without quantization

converter = tf.lite.TFLiteConverter.from_keras_model(model)
def representative_dataset():
    for _, samp in enumerate(trainX):
        yield [samp.astype(np.float32).reshape(1, 128, 6)]
    # Set the optimization flag.
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    # Enforce integer only quantization
    converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
    converter.inference_input_type = tf.int8
    converter.inference_output_type = tf.int8
    # Provide a representative dataset to ensure we quantize correctly.
    converter.representative_dataset = representative_dataset
    model_tflite = converter.convert()

   # Save the model to disk
   open('default_tf/model0_1.tflite', "wb").write(model_tflite)

当我通过netron检查tflite结构时,我发现exapandsDims操作包括在内,如下图所示enter image description here

我已经试着把

#include "tensorflow/lite/micro/all_ops_resolver.h"

我的草图,但没有解决问题,io也试图包括

#include "tensorflow/lite/micro/micro_mutable_op_resolver.h"
#include "tensorflow/lite/micro/kernels/micro_ops.h"
static tflite::MicroMutableOpResolver micro_op_resolver;
void setup(){
  micro_op_resolver.AddExpandDims();
}

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

   micro_op_resolver.AddExpandDims();
                     ^~~~~~~~~~~~~
exit status 1
'class tflite::MicroMutableOpResolver' has no member named 'AddExpandDims'
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像