【tensorflowflutter】自己写个机器学习模型用在项目上?

news/2024/7/20 22:11:11 标签: 机器学习, 人工智能, flutter, tensorflow, android, ios

背景

        拍摄APP项目上线有一阵了,每天的拍摄数据呈现波动上升状态、业务方需要对数据进行加工,如果能有对未来的数据量的预测就好了 。

目标 

      在端侧展示拍摄数据可视化趋势图等、并能推断数据(选择预测日期) 简单实现个demo

gif背景有点问题

先写总结 

   现在来看、出来的东西很简单,但是整个流程时串通起来了。至于什么是tensorflow lite 初识TensorFlow Lite -CSDN博客

    总体流程图是这样的 从左侧的数据来源开始、到tensorflow 模型训练 到云上、动态下发、再到预测数据。生产数据的 再次收集数据运行的全流程正循环。 模型训练在本篇下方 其他后续写

一.数据处理

    数据来源

     目前只有日志数据 以单个数据为维度的: 2023年x月x日 张某 所属部门 拍摄时间 等数据

   数据预处理 

    通过pyhton 统计当日共拍摄多少套、都属于哪个部门

   数据清洗

    去除前三天刚上线数据(不准)、和当日的数据(未统计完全)等特殊数据

   数据分析、抽取

    根据数据判断  不光跟当日部门数、时间、还有星期有关 比如 周五周六周天相对较高  将星期也为参数。

  输出关系图

sns.pairplot(train_dataset[["拍摄数量","事业部数量","weekday","index"]], diag_kind="kde")

        拆分训练数据集和测试数据集

   拆除80%的数据进行训练、20%进行测试

train_dataset = dataset.sample(frac=0.8,random_state=0)
test_dataset = dataset.drop(train_dataset.index)

从标签中分离特征

          把预测值分离出来

        train_labels = train_dataset.pop("拍摄数量")
        test_labels = test_dataset.pop("拍摄数量")

 数据规范化

使用不同的尺度和范围对特征归一化是好的实践。尽管模型可能 在没有特征归一化的情况下收敛,它会使得模型训练更加复杂,并会造成生成的模型依赖输入所使用的单位选择。

就是将数据统一差不多的大小  

def norm(x):
  return (x - train_stats['mean']) / train_stats['std']
normed_train_data = norm(train_dataset)
normed_test_data = norm(test_dataset)

结果类似于

        输入 :部门数 35  星期  3 日期 202

        输出 :1.98  0.0 1.768

       但是要注意 之后预测数据时 也要统一化      

二.构建模型

   构建

    我们将会使用一个“顺序”模型,其中包含两个紧密相连的隐藏层,以及返回单个、连续值得输出层。

def build_model():
  model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)
  ])

  optimizer = tf.keras.optimizers.RMSprop(0.001)

  model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae', 'mse'])
  return model

        训练 

# 通过为每个完成的时期打印一个点来显示训练进度
class PrintDot(keras.callbacks.Callback):
  def on_epoch_end(self, epoch, logs):
    if epoch % 100 == 0: print('')
    print('.', end='')

EPOCHS = 1000

history = model.fit(
  normed_train_data, train_labels,
  epochs=EPOCHS, validation_split = 0.2, verbose=0,
  callbacks=[PrintDot()])

预测值对比

        最后进行预测值对比

error = test_predictions - test_labels
plt.hist(error, bins = 25)
plt.xlabel("Prediction Error [MPG]")
_ = plt.ylabel("Count")

第一篇完

        tensorflow模型构建到此结束  想看详细教程  官网链接icon-default.png?t=N7T8https://www.tensorflow.org/tutorials/keras/regression

后续写转tensorflow lite/部署方案、动态下发、端侧推断部分 


http://www.niftyadmin.cn/n/5306518.html

相关文章

【Vue3+React18+TS4】1-1 : 课程介绍与学习指南

本书目录:点击进入 一、为什么做这样一门课程? 二、本门课的亮点有哪些? 2.1、轻松驾驭 2.2、体系系统 2.3、高效快捷 2.4、融合贯通 三、课程内容包括哪些? 四、项目实战 《在线考勤系统》 五、课适合哪些同学? 一、为什么做这样一门课程? 近十年内前端…

【sql】MyBatis Plus中,sql报错LIKE “%?%“:

文章目录 一、报错详情:二、解决:三、扩展: 一、报错详情: 二、解决: 将LIKE “%”#{xxx}"%"改为LIKE CONCAT(‘%’, #{xxx}, ‘%’) 三、扩展: MyBatis Plus之like模糊查询中包含有特殊字符…

如何在 Windows 上从电脑硬盘恢复照片

如今,随着相机设备的普及,您可以轻松地一次拍摄一堆照片,将它们传输到硬盘上,然后再拍摄更多照片。但是,如果您的所有照片意外丢失在驱动器中怎么办?你能恢复它们吗? 在本指南中,我…

云端股份与东滩集团、卓朗科技三方携手,为“长三角”区域数字经济发展助力

12月22日,云之端网络(江苏)股份有限公司(以下简称“云端股份”)与天津卓朗信息科技股份有限公司(以下简称“卓朗科技”)正式达成重点战略合作,同时,卓朗科技华东总部也正…

基于seatunnel实现mysql同步clickhouse验证

场景: 需求想要实现mysql同步到clickhouse,seatunnel部署见前面文档linux环境seatunnel安装运行-CSDN博客。 官方说明文档 Clickhouse | Apache SeaTunnel mysql同步配置 server-id1 log_bin/var/lib/mysql/bin.log binlog_formatROW #binlog-do-db 具…

一文详解动态 Schema

在数据库中,Schema 常有,而动态 Schema 不常有。 例如,SQL 数据库有预定义的 Schema,但这些 Schema 通常都不能修改,用户只有在创建时才能定义 Schema。Schema 的作用是告诉数据库使用者所希望的表结构,确保…

Apache SeaTunnel:探索下一代高性能分布式数据集成工具

大家下午好,我叫刘广东,然后是来自Apache SeaTunnel社区的一名Committer。今天给大家分享的议题是下一代高性能分布式海量数据集成工具,后面的整个的PPT,主要是基于开发者的视角去看待Apache SeaTunnel。后续所有的讲解主要是可能…

嵌入式科普(10)IAR debug reset delay

一、目的/概述 二、问题描述 三、解决办法 四、分析原理 4.1 halt after delay是什么 4.2 M3/M4内核如何配置 4.3 新建M3/M4内核工程验证 4.4 I-jet delay after 4.5 I-jet 默认值 4.6 st-link 4.7 DAP 4.8 T…