Teachable Machine模型之TensorFlow使用篇

news2024/10/6 5:55:01

前言: 使用在teachable machine训练的h5格式模型

tensorflow使用篇

1. 使用teachable machine训练模型

地址: 传送门, 需要梯子翻一下

训练后, 导出的时候可以选择三种类型
在这里插入图片描述

导出模型文件 converted_keras.zip (py版)
解压后得到
在这里插入图片描述

2. py项目中使用模型

根据你当时使用teachable machine的时间, 选择py项目中TensorFlow的版本

我现在使用的是必须是2.3.0版本及以上才行, 然后我直接升级到了2.10.0

如果版本不匹配会报错如下

ValueError: (‘Unrecognized keyword arguments:’, dict_keys([‘ragged’]))

解决的方法就是升级TensorFlow版本

pip install tensorflow==2.10.0 --upgrade

目录结构如下
在这里插入图片描述

app.py

# -*- coding: utf-8 -*-
import flask as fk
from flask import jsonify, request
import tensorflow as tf
from PIL import Image
import numpy as np

app = fk.Flask(__name__)

# 加载标签映射
class_label_map = {}
with open('labels.txt', 'r', encoding='utf-8') as f:
    for line in f.readlines():
        index, label = line.strip().split()
        class_label_map[int(index)] = label

print(class_label_map)

# 加载模型
global model
model = tf.keras.models.load_model('keras_model.h5')
print('模型加载成功')

# 图片预处理方法
def preprocess_image(image_path):
    img = Image.open(image_path)
    # 调整大小、归一化等操作,具体取决于模型要求
    img_resized = img.resize((224, 224))
    img_array = np.array(img_resized) / 255.0  # 将像素值归一化到[0, 1]区间
    img_array = np.expand_dims(img_array, axis=0)  # 添加批量维度(batch size = 1)
    return img_array

# 预测方法
def load_model():

    # 准备输入数据
    input_data = preprocess_image("danka.jpg")
    # input_data = preprocess_image("duolianka.jpg")
    # 预测
    predictions = model.predict(input_data)
    # 获取预测结果
    predicted_class_index = np.argmax(predictions[0])
    # 获取预测的类名
    predicted_class_name = class_label_map[predicted_class_index]
    print(f"Predicted class: {predicted_class_name}")
    return predicted_class_name


# 测试预测
@app.route('/api/hello', methods=['GET'])
def get_data():
    return load_model()


# 假设我们要提供一个获取用户信息的API
@app.route('/api/user/<int:user_id>', methods=['GET'])
def get_user_info(user_id):
    # 这里模拟从数据库或其他服务获取用户信息
    user_data = {'id': user_id, 'name': 'John Doe', 'email': 'john.doe@example.com'}

    # 假设用户不存在,返回404
    # 返回JSON格式的用户信息
    return jsonify(user_data)


# 定义一个接收POST请求的路由,假设该接口用于创建新用户
@app.route('/api/users', methods=['POST'])
def create_user():
    # 从请求体中获取JSON格式的数据
    data = request.get_json()

    # 检查必要的字段是否存在
    if not all(key in data for key in ('username', 'email', 'password')):
        return jsonify({"error": "Missing required fields"}), 400

    # 这里仅做示例,实际开发中应将数据保存至数据库等
    new_user = {
        'username': data['username'],
        'email': data['email'],
        'password': data['password']
    }

    # 模拟用户创建成功
    resultMap = {"message": "User created successfully", "user": new_user}

    # 返回201状态码表示已创建资源
    return jsonify(resultMap), 201


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

可以直接使用postman请求无参get, 可以得到卡类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简介:基于Web的产品3D

基于 Web 的产品 3D 通过可视化界面获得各种选项来个性化他们的产品&#xff0c;例如颜色、材料、尺寸、文字、徽标、零件等。 在过去几年中&#xff0c;随着 3D 建模和渲染软件的出现&#xff0c;3D 渲染现在更常用于营销和促销目的。设计师、制造商和营销人员使用 3D 产品渲…

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04 2024/4/8 20:48 IMG固件使用&#xff1a;h3-eflasher-friendlycore-xenial-4.14-armhf-20210618.img 固件不能放倒中文目录里/只能放到英文目录内&#xff01; 【也不能放到网络磁盘里】映射网络驱动器&#xff01; Wi…

大模型日报|今日必读的7篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.CT-LLM&#xff1a;仅 20 亿参数&#xff0c;基于中文的大型语言模型 来自开源研究社区 Multimodal Art Projection、复旦大学和香港科技大学的研究团队及其合作者&#xff0c;推出了一个 20 亿参数的大型语言模型…

c++配置libtorch

这里写目录标题 LibTorch下载Vistual Studio环境配置C部署Libtorch出现问题、错误汇总检测环境是否配置成功 LibTorch下载 安装LibTorch非常简单&#xff0c;只需要从其官网选择相应的版本即可&#xff0c;具体页面如下图所示。 如果需要加载PyTorch训练的模型文件&#xff0…

Centos中一些有趣的命令

目录 1.sl 小火车 2. cowsay 会说话的牛 3.toilet/figlet 图形化输出 4.aafire 小火焰 5.linux_logo 显示系统logo 1.sl 小火车 yum install sl 2. cowsay 会说话的牛 yum install cowsay 3.toilet/figlet 图形化输出 yum install toilet yum install figlet 4.aafire 小火…

电子电路中,MOS管的开启电压取多少最为合适呢?

电路中&#xff0c;MOS管的开启电压取多少最为合适呢&#xff1f; 比如&#xff1a; 某Nmos VGS范围为正负20V 栅极阈值电压&#xff08;VGSth&#xff09;最小为0.8V&#xff0c;最大为1.5V 那么此时的Mos管栅极电压取多少最为合适&#xff1f; 在电路中&#xff0c;MOS管的开…

通过Golang获取公网IP地址

在Go语言中&#xff0c;获取当前的外网&#xff08;公网&#xff09;IP地址可以通过多种方法实现。其中一种常见的方法是通过访问外部服务来获取。这些服务可以返回访问者的公网IP地址&#xff0c;例如 httpbin.org/ip 或 ipify.org。下面是一个简单的例子&#xff0c;展示了如…

汇编语言程序设计实验五 条件转移指令

实验目的和要求 (1) 编写实验任务要求的两个程序。 (2) 写出调试以上程序&#xff0c;即修改程序参数&#xff0c;检查结果的操作方法。 (3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。 实验环境 DOSBOX 实验内容与过程 验证以下程序 16进制数…

JS 轮播图点击左右切换

点击左右按钮实现轮播图切换图片 style&#xff1a; *{margin: 0;padding: 0;margin: auto;}#img1{width: 300px;height: 300px;position: relative;}#butto1{width: 50px;height: 100px;font-size: 50px;border: none;background-color: hsla(0, 0%, 0%, 0.2);position: abs…

CS162 Operating System笔记

What is an Operating System? it’s typically a special layer of software that provides the application access to hardware resources.So.it’s convenient abs fractions of complex hardware devices.

DVWA-xss储存型及beef下载(kali)

beef下载 apt-get update apt-get install beef-xss 登录网址是 这里的ip为虚拟机的地址 之后会让你设置密码 如果密码和用户不知道在etc/beef-xss/config.yaml可以查看 这是偷cookie的就是代码 这里是可以修改的不修改的话代码是不全的 通过beef拿到了cookies之后在网页…

知名度最高的3款电脑监控软件

知名度最高的3款电脑监控软件 公司电脑监控软件是一种安装在员工电脑上的软件&#xff0c;主要用于监控和管理员工的电脑屏幕操作、网络行为以及文件操作等。这种软件有助于企业提高员工的工作效率&#xff0c;保护公司的数据安全&#xff0c;并维护公司的IT健康环境。 市面有…

Seatunnel和web快速安装详解

目录 版本声明下载地址seatunnel下载seatunnel-web下载 安装seatunnel上传压缩包解压配置环境变量下载JAR包测试功能启动服务 安装seatunnel-web解压安装包初始化数据库修改数据连接配置文件配置Client信息配置支持的插件信息配置JAR包配置数据源JAR包配置datasource开头的jar包…

Leetcode 第 390 场周赛题解

Leetcode 第 390 场周赛题解 Leetcode 第 390 场周赛题解题目1&#xff1a;3090. 每个字符最多出现两次的最长子字符串思路代码复杂度分析 题目2&#xff1a;3091. 执行操作使数据元素之和大于等于 K思路代码复杂度分析 题目3&#xff1a;3092. 最高频率的 ID思路代码复杂度分析…

nginx支持的多种负载均衡策略

目录 1.轮询&#xff08;默认&#xff09; 2. ip_hash 3. 加权轮询&#xff08;weight&#xff09; 4. fair&#xff08;第三方&#xff09; 5. 最少连接&#xff08;least_conn&#xff09; 1.轮询&#xff08;默认&#xff09; 将请求依次分配给每个服务器&#xff0c;确…

嵌入式工控机:提升工业生产线智能化水平

工业4.0和智能制造的发展&#xff0c;嵌入式工控机在自动化生产线中的角色日益凸显。它作为一种高度集成且适用于严苛工业环境的专用计算机&#xff0c;凭借其强大的数据处理能力和实时控制特性&#xff0c;正逐步成为现代工业生产线的协调器和核心控制器。 嵌入式工控机能够实…

人工智能的前景发展和可能产生的职业影响

人工智能作为科技创新的关键领域和数字经济时代的重要支柱&#xff0c;其发展前景广阔&#xff0c;未来的就业前景也备受关注。以下是对人工智能格局未来就业前景的展望&#xff1a; 首先&#xff0c;随着技术的不断进步和应用场景的拓展&#xff0c;人工智能行业对人才的需求将…

12_Spring-AOP

文章目录 动态代理原理AOPAOP和OOPAOP的特点AOP的应用场景AOP的编程术语AOP的实现SpringAOPAspectJ切面组件切入点表达式AspectJ切面JoinPoint连接点 机制 动态代理原理 AOP Aspect Oriented Programming面向切面编程&#xff0c;是指通过预编译方式和运行期动态代理实现程序功…

目标检测——RCNN系列学习(一)

前置知识 包括&#xff1a;非极大值抑制&#xff08;NMS&#xff09;、selective search等 RCNN [1311.2524] Rich feature hierarchies for accurate object detection and semantic segmentation (arxiv.org)https://arxiv.org/abs/1311.2524 1.网络训练 2.推理流程 3.总…

【C++ STL算法】sort 排序

文章目录 【 1. 基本原理 】【 2. sort 的应用 】实例 - sort 函数实现 升序排序和降序排序 函数名用法sort (first, last)基于 快速排序&#xff0c;对容器或普通数组中 [ first, last ) 范围内的元素进行排序&#xff0c;默认进行升序排序&#xff08;从小到大&#xff09;。…