《mnist_model.h5》在flask中加载mnist模型

一、在tensorflow中新建及保存模型

启动Jupyter Notebook

新建Notebook

代码

from flask import Flask, request, jsonify   # type: ignore
import numpy as np   # type: ignore
import tensorflow as tf   # type: ignore
import json  
from PIL import Image  # type: ignoreapp = Flask(__name__)  # 加载模型(确保模型文件与此脚本在同一目录下,或者提供正确的路径)  
model = tf.keras.models.load_model('mnist_model.h5')  def get_image_metadata(image_path):  img = Image.open(image_path)  metadata = {  'filename': image_path.split('/')[-1],  'width': img.width,  'height': img.height,  'format': img.format,  'mode': img.mode  }  return metadata def image_to_json(image_path, output_path):  metadata = get_image_metadata(image_path)  with open(output_path, 'w') as f:  json.dump(metadata, f, ensure_ascii=False, indent=4)  def preprocess_image(img):  # 将 PIL 图像转换为 numpy 数组  img_array = np.array(img)  # 归一化  img_array = img_array / 255.0  # 如果模型需要特定的维度(例如,扩展维度和颜色通道),则进行调整  img_array = np.expand_dims(img_array, axis=0)  # 如果模型接受的是灰度图像,但是 PIL 加载的是 RGB 图像,需要转换为灰度  if img_array.shape[3] == 3:  img_array = np.mean(img_array, axis=3, keepdims=True)  return img_array@app.route('/predictlast', methods=['GET'])  
def predictlast():  # if 'file' not in request.files:  #    return jsonify({'error': 'No file part in the request'}), 400  # file = request.files['file']  # file = Image.open('path_to_your_image.jpg')# 如果用户未选择文件,浏览器也会提交一个空文件部分,没有文件名  # if file.filename == '':  #    return jsonify({'error': 'No selected file'}), 400  # 读取图片文件  img = Image.open('path_to_your_image.jpg')  # 转换为模型需要的格式  img_array = preprocess_image(img)  # 使用模型进行预测  prediction = model.predict(img_array)# print(prediction)# 假设你的模型输出的是 one-hot 编码,你需要找到概率最高的类别  # predicted_class = np.argmax(prediction, axis=1)[0]  # 返回预测结果  # return jsonify({'predicted_class': predicted_class}) return "dfd" @app.route('/test', methods=['GET'])  
def test():  print(233)# data = request.get_json()  # 假设客户端发送JSON格式的数据  # data =get_image_metadata('path_to_your_image.jpg')image_to_json('path_to_your_image.jpg', 'image_metadata.json')# input_data = np.array(data).reshape(1, -1)  # 转换输入数据格式以适应模型  # print(input_data)# prediction = model.predict(input_data)  # 使用模型进行预测  # return jsonify({'prediction': prediction.tolist()})  # 返回预测结果作为JSON响应  return "dfdf"if __name__ == '__main__':  app.run(debug=True)  # 启动Flask应用(开发模式)

二、VScode 启动Flask命令

pip install tensorflow
pip install Pillow
python -- mnist_hello.py

启动效果

三、访问地址

http://127.0.0.1:5000/predictlast

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

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

相关文章

Rust编写测试及控制执行

编写测试及控制执行 在 Rust 中,测试是通过函数的方式实现的,它可以用于验证被测试代码的正确性。测试函数往往依次执行以下三种行为: 设置所需的数据或状态运行想要测试的代码判断( assert )返回的结果是否符合预期 让我们来看看该如何使…

sd-wan跨境访问|公司海外工厂加速访问ERP系统解决方案

随着全球化的深入发展和国际市场竞争的加剧,越来越多的企业选择在国外建立工厂,以扩大市场份额和优化资源配置。然而,这也带来了一系列新的挑战,其中之一就是国外工厂员工在访问国内ERP系统时面临的超高延迟等问题。这一问题不仅严…

Linux_应用篇(27) CMake 入门与进阶

在前面章节内容中,我们编写了很多示例程序,但这些示例程序都只有一个.c 源文件,非常简单。 所以,编译这些示例代码其实都非常简单,直接使用 GCC 编译器编译即可,连 Makefile 都不需要。但是,在实…

神经网路学习7-线性模型

一个最简单的线性模型,w是权重,一般来说会取随机值,然后不断学习直到与预期相同 如此以此取每个值与真实值的差值,即评估误差 即找一个合适的权重w,使得平均误差最小 上面的是针对单个样本的,后面的是对…

2024年必备的15个免费 SVG 设计资源

在动态设计领域,SVG(可缩放矢量图形)已成为设计师打造响应迅速、清晰且适应性强的视觉效果的必备工具。 这些设计非常适合幻灯片 PowerPoint 演示文稿、应用程序设计、网站设计、原型设计、社交媒体帖子等。 在这篇文章中,我们将…

【ONLYOFFICE8.1桌面编辑器】强势来袭—— 一款全面的办公软件套件

在日常工作和学习中,我们经常需要处理各种文档、表格和演示文稿。一款功能强大、易于使用的办公软件成为我们提高工作效率、便捷沟通和展示想法的得力助手。 而ONLYOFFICE 8.1桌面编辑器正是一款全面、高效的办公软件,集合了Word、PPT、Excel的功能&…

20240626 每日AI必读资讯

🌍警告!OpenAI宣布全面封锁中国API接入! - 7月9号开始封锁不支持的国家API - 如果在OpenAI不允许的国家使用其 API 将面临封杀 🔗 警告!OpenAI 宣布全面封锁中国 API 接入-CSDN博客 🎵索尼、环球音乐、华…

基于SpringBoot的“智慧食堂”管理系统设计与实现

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBootVue 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户管理界面 菜品…

基于CRITIC-TOPSIS法的各地区评价

1.CRITIC-TOPSIS法原理 1.1 基本理论 CRITIC-TOPSIS法是一种结合CRITIC(Criteria Importance Through Intercriteria Correlation)法和TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)法的综合评价方法…

深度学习语义分割算法之基础知识

文章目录 前言一、图像分割介绍1.语义分割2.实例分割3.全景分割 二、常见数据集格式1.PASCAL VOC2.MS COCO 三、语义分割结果四、语义分割常见评价指标1.Pixel Accuracy2.mean Accuracy3.mean IoU 五、语义分割标注工具结束语 💂 个人主页:风间琉璃🤟 版…

更适合敏感口腔的护理牙刷

最近在用一款清九野小红盾舒敏牙刷,感觉它很适合牙龈敏感的人,让刷牙体验有了显著的提升。这款牙刷的柔软刷毛和精细设计让我的刷牙过程变得轻松愉快。它的内外圈双重植毛技术,在清洁牙齿的同时,还能深入牙缝,温和地去…

设计模式原则——单一职责原则(SPS)

设计模式原则 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 单一职责原则(SPS): 又称单一功能原则,面向对象五个基本原则(SOLID)之一原则定义:一个类应…

还能这样执行命令?命令执行绕过及防护规则研究

一、引言 我是渗透工程师->很多小伙伴在做攻防实战时发现有时在命令执行的payload中穿插单双引号命令也能执行成功,有时却又不行。那么到底在什么条件下用什么样的方式能实现对命令的切分呢?其中的原理又是如何?有没有其他绕过方式&#…

openlayers 轨迹回放(历史轨迹),实时轨迹

本篇介绍一下使用openlayers轨迹回放(历史轨迹),实时轨迹 1 需求 轨迹回放(历史轨迹)实时轨迹 2 分析 主要是利用定时器,不断添加feature 轨迹回放(历史轨迹),一般是…

rga_mm: RGA_MMU unsupported Memory larger than 4G!解决

目录 报错完整log如下:解决方案:报错完整log如下: [ 3668.824164] rga_mm: RGA_MMU unsupported Memory larger than 4G! [ 3668.824305] rga_mm: scheduler core[4] unsupported mm_flag[0x0]! [ 3668.824320] rga_mm: rga_mm_map_buffer map dma_buf err

Linux环境下安装MySQL5.7.20(源码安装)

📣📣📣 哈喽!大家好,本专栏主要发表mysql实战的文章,文章主要包括: 各版本数据库的安装、备份和恢复,性能优化等内容的学习。。 📣 ***如果需要观看配套视频的小伙伴们,请…

【Apache Doris】周FAQ集锦:第 8 期

【Apache Doris】周FAQ集锦:第 8 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

Fluent udf编译的一些注意事项

Fluent udf编译的一些注意事项 参考链接:1.fluent UDF编译环境处理_哔哩哔哩_bilibili 2.【觉兽课堂】ANSYS FLUENT UDF教学02:UDF语法及编写 小白入门必备_哔哩哔哩_bilibili #1 需要注意的内容 ##1.1 修改vs的路径 在fluent路径中,打开ud…

Golang笔记:使用serial包进行串口通讯

文章目录 目的使用入门总结 目的 串口是非常常用的一种电脑与设备交互的接口。这篇文章将介绍golang中相关功能的使用。 本文使用的包为 :go.bug.st/serial https://pkg.go.dev/go.bug.st/serial https://github.com/bugst/go-serial 另外还有一些常见的包如&…

cpp入门(命名空间,输入输出与缺省参数)

目录 cpp关键字 命名空间 命名空间的使用 1.加名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.展开命名空间 注意 输入输出 缺省参数 cpp关键字 命名空间 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字&#xff0c…