8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

针对 ARMCortex-M4 构建的微控制器 Tensorflow Lite

Football Dudes 2月前

55 0

我想为微控制器构建 tensorflow lite,以便能够将其用作基于 ARMCortex-M4 的主板的库。我的应用程序的总体目的是在 tensorflow 中训练模型并转换...

我想为微控制器构建 tensorflow lite,以便能够将其用作基于 ARMCortex-M4 的主板的库。我的应用程序的总体目的是在 tensorflow 中训练模型并将其转换为 C 数组。然后,我想使用 TFLite Micro API 在我的代码中从 C 数组使用此模型。

我读过 TFLite 微控制器文档。但是,它似乎太复杂了。如果有分步文档,我将不胜感激。

我尝试使用 Bazel 为微控制器构建 TFLite。对于 Windows,我无法为 ARMCortex-M4 生成库。我获得了 Linux 的库,但它不起作用。

帖子版权声明 1、本帖标题:针对 ARMCortex-M4 构建的微控制器 Tensorflow Lite
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Football Dudes在本站《tensorflow》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我尝试将带有时间戳的能耗数据集和 covid 数据集输入 CNN_M_LSTM 模型(库 Tensorflow 和 Keras API)。带有时间戳的数据集的能耗大小为……

    我尝试将带有时间戳数据集和 covid 数据集的能量消耗输入 CNN_M_LSTM 模型(库 Tensorflow 和 Keras API)。

    带时间戳的能耗数据集的大小为 (730, 2)

    Covid 数据集的大小为 (730, 1)

    我想对 covid 数据集和带有时间戳的能耗进行切片和窗口化(批处理大小 = 128,窗口大小为 96)。最后将两个数据集压缩在一起。

    这是我的代码片段和窗口,包括能源消耗和时间戳数据集,即 covid 数据集:

    MAX_LENGTH = 96
    BATCH_SIZE = 128 
    TRAIN.SHUFFLE_BUFFER_SIZE = 1000
    
    
    def windowed_dataset(series, window_size=MAX_LENGTH, batch_size=BATCH_SIZE, shuffle_buffer=TRAIN.SHUFFLE_BUFFER_SIZE):
        """
        We create time windows to create X and y features.
        For example, if we choose a window of 30, we will create a dataset formed by 30 points as X
        """
        dataset= tf.data.Dataset.from_tensor_slices(series) 
        dataset = dataset.window(window_size + 1, shift=1) 
        dataset = dataset.flat_map(lambda window: window.batch(window_size + 1)) # the order dataset stays the same
        dataset = dataset.shuffle(1000)
        dataset = dataset.map(lambda window: (window[:-1], window[-1][0])) 
        dataset = dataset.padded_batch(128,drop_remainder=True).cache()
    
        return dataset
    
    

    以下是我压缩数据集的方法:

    
    train_energy_dataset = windowed_dataset(TRAIN.PRE_PROCESSED_SERIES)
    train_covid_dataset = windowed_dataset(TRAIN.SERIES_COVID)
    
    
    train_dataset = tf.data.Dataset.zip((train_covid_dataset,train_energy_dataset))
    
    train_dataset = train_dataset.shuffle(buffer_size=1000)
    train_dataset = train_dataset.map(lambda data1, data2: ((data1[0], data2[0]), data1[1]))  # Adjust mapping as per your need
    train_dataset = train_dataset.batch(128, drop_remainder=True).cache()
    

    我的模型:

    
    def create_CNN_LSTM_model():
        # Define the inputs
        input1 = tf.keras.layers.Input(shape=(128,1), name="input1")
        input2 = tf.keras.layers.Input(shape=(128,2), name="input2")
    
        # Define the CNN-LSTM part of the model
        x = tf.keras.layers.Conv1D(filters=128, kernel_size=3, activation='relu', strides=1, padding="causal")(input1)
        x = tf.keras.layers.MaxPooling1D(pool_size=2)(x)
        x = tf.keras.layers.Conv1D(filters=64, kernel_size=3, activation='relu', strides=1, padding="causal")(x)
        x = tf.keras.layers.MaxPooling1D(pool_size=2)(x)
        x = tf.keras.layers.Dropout(0.5)(x)
        x = tf.keras.layers.LSTM(16, return_sequences=True)(x)
        x = tf.keras.layers.LSTM(8, return_sequences=True)(x)
        x = tf.keras.layers.Flatten()(x)
        output_lstm = tf.keras.layers.Dense(1)(x)
    
        # Define the dense part of the model
        output_dense_1 = tf.keras.layers.Dense(1)(input2)
    
        # Concatenate the outputs of LSTM and Dense layers
        concatenated = tf.keras.layers.Concatenate(axis=1)([output_dense_1, output_lstm])
    
        # Add further dense layers
        x = tf.keras.layers.Dense(6, activation=tf.nn.leaky_relu)(concatenated)
        output = tf.keras.layers.Dense(4)(x)
        model_final = tf.keras.Model(inputs=[input1, input2], outputs=output)
        # Define the final model
        return model_final
       
    
    
    model_cnn_m_lstm = create_CNN_LSTM_model()
    
        # Compile the model
    model_cnn_m_lstm.compile(
            loss=tf.keras.losses.Huber(),
            optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
            metrics=["mse"]
        )
    
    model_cnn_m_lstm.summary()
    
    
    
    model_cnn_m_lstm.fit(train_dataset, epochs=100, batch_size=128)
    

    在尝试窗口化并压缩数据集时,我收到以下错误

    ValueError: Exception encountered when calling Functional.call().
    
    Invalid input shape for input Tensor("functional_100_1/Cast_1:0", shape=(128, 128, None, 2), dtype=float32). Expected shape (None, 128, 2), but input has incompatible shape (128, 128, None, 2)
    
    Arguments received by Functional.call():
      • inputs=('tf.Tensor(shape=(128, 128, None, 1), dtype=float64)', 'tf.Tensor(shape=(128, 128, None, 2), dtype=float64)')
      • training=True
      • mask=('None', 'None')
    

    我还通过将模型的输入形状更改为

        input1 = tf.keras.layers.Input(shape=(128,2), name="input1")
        input2 = tf.keras.layers.Input(shape=(128), name="input2")
    
    The error appear as expected 2 dims but received 3 dims. 
    

    我的期望是将 zip 数据集输入到我的 CNN_M_LSTM 模型中。

  • OmB 2月前 0 只看Ta
    引用 3

    我已经使用 tensorflow 训练了一个模型(用于识别面部),然后将其保存为“facetracker.h5”。但是,当我尝试加载模型时,它只是继续加载“[*]”,如图所示...

    我已经使用 tensorflow 训练了一个模型(用于识别面部),然后将其保存为“facetracker.h5”。但是,当我尝试加载模型时,它只是继续加载“[*]”,如下图所示,并且实际上从未完成加载。该模型(facetracker.h5)只有 68 MB,所以我是否正确地认为这不是由于它的大小而发生的?

    facetracker 的样子如下:

  • 在加载模型时,您可以监控系统资源(CPU、RAM、磁盘 I/O)。有什么意外吗?

  • 您还可以将模型加载到内存中,然后对其进行反序列化。另外,您使用的 Tensorflow 和 keras 版本是什么?尽可能更新到最新版本。

  • 嗨,谢谢您的回复。我监控了系统资源,没有发现任何异常。我还将 tensorflow 更新到了最新版本。

  • 另外,当我在 WSL 内部的 jupyter 实验室中运行它时它确实会加载,但在 WSL 外部则不会加载

  • 我试图将一个对象的实例返回给另一个对象,如下所示:`class object1(): attrib = '??' def obj_instance(self): return selfclass object2(): obj1 =

    我正在尝试将一个对象的实例返回给另一个对象,如下所示:

    `类对象1():

       attrib = '??'
     
       def obj_instance(self):
           return self
    
    class object2():
    
       obj1 = object1.obj_instance()`
    

    问题在于它需要将“self”声明为 obj_instance() 的参数,如下所示:

    obj1 = object1.obj_instance(self) print obj1.attrib <<<< This fails with object2 has no attribute 'attrib'

    如果我使用:

    `类对象1():

    def obj_instance():      <<<  i.e.,  without 'self'
       return self`
    

    我收到“self”未定义的错误。

    显然,这些尝试没有产生任何有用的结果。我也无法向上追溯父树来访问 object1(object2 在 object1 之后实例化)。从我提供的 Python 代码来看,并不清楚为什么会出现这种情况。相信我,情况确实如此。

    是否有某种方法可以获取引用,从而可以从对象 2 内部访问对象 1 的属性?

    我相信这可以在 C/C++ 中完成,但看起来在 Python 中是不可能的。

    评论?

返回
作者最近主题: