久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1121|回復: 0
打印 上一主題 下一主題
收起左側

STM32cubemx.AI與普通邏輯的區別

[復制鏈接]
跳轉到指定樓層
樓主
ID:891089 發表于 2022-5-2 21:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近看到關于STM32cubemx支持機器學習的例子,感覺很新奇,于是拿來試試,stm32cubemx是基于stm公司的HAL庫,新手學起來很是方便,但是不推薦想真正搞懂stm的人去學,因為它會自己配置好gpio,各個功能引腳,少學這些步驟不是真正學會stm32,還是老老實實去用庫函數吧。我是拿來玩玩的。
言歸正傳,搭建python環境廢了很大的勁,我的模型因為只是一個demo,所以很簡陋,就是對電壓進行分級,比如  
一級    ->  v>=8.0
二級    ->  7.8<=v<8.0
三級    ->  v<7.8
先手動輸入一些數據進行訓練,例如
0
0
0
1
1
0
0
1
2
0
0
1
3
0
0
1
4
0
0
1
7.61
0
0
1
7.62
0
0
1
7.63
0
0
1
7.64
0
0
1
7.65
0
0
1
7.66
0
0
1
7.75
0
0
1
7.78
0
0
1
7.71
0
0
1
7.72
0
0
1
7.8
0
1
0
7.83
0
1
0
7.92
0
1
0
7.85
0
1
0
7.81
0
1
0
7.81
0
1
0
7.84
0
1
0
7.89
0
1
0
7.98
0
1
0
7.88
0
1
0
8.02
1
0
0
8.12
1
0
0
8.05
1
0
0
8.15
1
0
0
8.11
1
0
0
8.01
1
0
0
8.22
1
0
0
8.12
1
0
0
8.14
1
0
0
8.07
1
0
0
經過訓練后,輸入對應范圍的數據,就會有不同的輸出,比如,我輸入表格中沒有的數據是0.5 它會輸出1,這是正確的
需要說明的是,我的python程序中并沒有類似 If(v<7.8) 輸出1 以及其他范圍輸出2或3,這種邏輯,沒有在訓練數據中的數據該返回什么完全是它自己判斷的,我認為,在某種意義上,也是擁有了某種“智能”的表示。但是,我還是搞不懂,它的意義到底是什么,就像上面說的,明明寫幾個if()else()就能搞定的問題,為什么要這么麻煩
以上,我是接觸了機器學習幾天的時間,所以還不是特別了解機器學習的內涵,請大佬批評指正。下面是模型以及程序代碼

模型
'''
電源等級檢測測試
訓練模型閾值
一級    ->  v>=8.0
二級    ->  7.8<=v<8.0
三級    ->  v<7.8

輸入層 -> 隱藏層 -> 輸出層

'''
'''
電源等級檢測測試
訓練模型閾值
一級    ->  v>=8.0
二級    ->  7.8<=v<8.0
三級    ->  v<7.8

輸入層 -> 隱藏層 -> 輸出層

'''

#導入工具包
import tensorflow as tf
import pandas as pd
import numpy as np

#讀取數據
data = pd.read_csv(r'e:/data/voltage.csv', sep=',', header=None)
voltage = data.iloc[:,0]
level = data.iloc[:,1:]
level.astype(int)

#建立模型
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=20, activation='relu', input_shape=(1,)))
model.add(tf.keras.layers.Dense(units=10, activation='relu'))
model.add(tf.keras.layers.Dense(units=3, activation='softmax'))
model.summary()

model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
             loss=tf.keras.losses.categorical_crossentropy,
             metrics=[tf.keras.metrics.mse])
history = model.fit(x=voltage, y=level, epochs=40000)

print(model.evaluate(voltage, level))

#保存模型
model.save('level_check.h5')



程序
'''
電源等級檢測測試
訓練模型閾值
一級    ->  v>=8.0
二級    ->  7.8<=v<8.0
三級    ->  v<7.8
'''
#導入工具包
import tensorflow as tf
import numpy as np

import time
import datetime

#輸出函數 輸出更加直觀
def level_output(level=np.zeros(3)):
    for i in range(level.shape[1]):
        if level[0,i] == 1.0:
            return i+1

#測試電壓
test_v = 7.8

t1 = time.time()

#導入模型計算
load_model = tf.keras.models.load_model(r'C:\Users\Administrator\level_check.h5')
out = load_model.predict([test_v])
print(out)

cal_level = np.around(out).astype(int)

t2 = time.time()

#輸出能源等級
level = level_output(cal_level)
print(level)
print((int(t2*1000)-int(t1*1000)))

#轉換模型為tf lite格式 不量化
converter = tf.lite.TFLiteConverter.from_keras_model(load_model)
tflite_model = converter.convert()

#保存到磁盤
open("level_check.tflite", "wb").write(tflite_model)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费观看国产视频在线 | 日韩一区二区av | 日本又色又爽又黄的大片 | 亚洲一区二区三区 | 日韩精品av一区二区三区 | 免费成人高清在线视频 | 国产剧情久久 | 日韩精品视频一区二区三区 | 亚洲最新在线视频 | 草久网| 欧美一二区| 国产一区二区三区 | 精品欧美一区免费观看α√ | 国产www.| 91视视频在线观看入口直接观看 | 国产精品一区二区av | 国产成人久久精品一区二区三区 | 亚洲国产精品网站 | 日韩区| 精品视频在线观看 | 午夜精品 | 日本不卡高字幕在线2019 | 久久国品片 | 成人在线精品视频 | 亚洲欧美第一视频 | 视频一区二区中文字幕日韩 | 亚洲欧美日韩国产综合 | 亚洲美女视频 | 午夜精品久久久久久久久久久久久 | 国产精品成人在线 | 亚洲国产情侣 | 国产精品久久久久久久三级 | 亚洲一区中文字幕 | 丁香综合 | 久久久免费电影 | 日韩毛片播放 | 国产伦精品一区二区三区视频金莲 | 成人亚洲性情网站www在线观看 | 精品久久久久久亚洲精品 | 91视频观看 | 成年人在线视频 |