本文地址:https://www.cnblogs.com/tujia/p/13862360.html

系列文章:

【0】TensorFlow光速入门-序

【1】TensorFlow光速入门-tensorflow开发基本流程

【2】TensorFlow光速入门-数据预处理(得到数据集)

【3】TensorFlow光速入门-训练及评估

【4】TensorFlow光速入门-保存模型及加载模型并使用

【5】TensorFlow光速入门-图片分类完整代码

【6】TensorFlow光速入门-python模型转换为tfjs模型并使用

【7】TensorFlow光速入门-总结

一、保存模型

创建一个目录

!mkdir /tf/saved_model

注:jupyter 代码块前面加一个!号表示,这是shell命令,不是代码;

保存模型

model.save('/tf/saved_model/wnw')

保存模型的其他参数及操作,看这里 https://tensorflow.google.cn/api_docs/python/tf/keras/Model#save

二、加载模型

import tensorflow as tf
from tensorflow import keras
import numpy as np
from IPython import display
import random # 加载模型
model = keras.models.load_model('/tf/saved_model/wnw')
# 看一下模型的结构
model.summary() # 随便找点图片
all_image_paths = []
data_root = pathlib.Path('/tf/datasets/wnw')
for item in data_root.rglob('*.jpg'):
all_image_paths.append(str(item))
print(len(all_image_paths)) # 随机选取一张图片
img_path = random.choice(all_image_paths)
print(img_path) # 把图片处理成需要的tensor
image = tf.io.read_file(img_path)
image = tf.image.decode_image(image, channels=1)
image = tf.image.resize(image, (100, 100))
image /= 255
print(image.shape) # 预测只支持批量操作,我们给单张图片再加一维
images = (np.expand_dims(image, 0))
print(images.shape)
# 预测
predictions = model.predict(images) # 打印结果
label_names = ['other', 'watch']
label = np.argmax(predictions[0])
print(label_names[label]) # 把图片也打印出来,看一下预测效果对不对
display.display(display.Image(img_path, width=200, height=200))

注:

用于预测的图片数据要和训练的图片数据保持一致:

简单来说,训练不一定要100*100的灰图,我可以是80*80的灰图或彩图,都没关系。

重要的是,用使用模型的时候,要先把预测数据转换成训练集数据一样的格式

重点:

model.save                                    https://tensorflow.google.cn/api_docs/python/tf/keras/Model#save

keras.models.load_model             https://tensorflow.google.cn/api_docs/python/tf/keras/models/load_model

至此,我们已经可以加载并使用模型了。我们可以用python封装程序成web服务api,以供调用。不过像图片分类这一类,频繁的拍照上传图片调用api也不太好。

这里,我们已经实现了在【序】里说的一个小目标:使用模型!!

在网上下载的第三方开源模型,只要知道它的用途及其输入参数(input_shape)数据格式,我们就可以用 tf.io、tf.image、tf.data.Dataset 等api接口处理数据成所需格式,然后就可以直接评测(使用)了

下一节,我们先整理一下图片分类的完整代码,然后下下节,我们再说一下怎样使用tfjs直接加载模型(不需要调python服务)

【5】TensorFlow光速入门-图片分类完整代码

【6】TensorFlow光速入门-python模型转换为tfjs模型并使用

本文链接:https://www.cnblogs.com/tujia/p/13862360.html


完。

【4】TensorFlow光速入门-保存模型及加载模型并使用的更多相关文章

  1. PyTorch保存模型与加载模型+Finetune预训练模型使用

    Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...

  2. [Pytorch]Pytorch 保存模型与加载模型(转)

    转自:知乎 目录: 保存模型与加载模型 冻结一部分参数,训练另一部分参数 采用不同的学习率进行训练 1.保存模型与加载 简单的保存与加载方法: # 保存整个网络 torch.save(net, PAT ...

  3. 莫烦python教程学习笔记——保存模型、加载模型的两种方法

    # View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...

  4. 【6】TensorFlow光速入门-python模型转换为tfjs模型并使用

    本文地址:https://www.cnblogs.com/tujia/p/13862365.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  5. 【0】TensorFlow光速入门-序

    本文地址:https://www.cnblogs.com/tujia/p/13863181.html 序言: 对于我这么一个技术渣渣来说,想学习TensorFlow机器学习,实在是太难了: 百度&qu ...

  6. 【1】TensorFlow光速入门-tensorflow开发基本流程

    本文地址:https://www.cnblogs.com/tujia/p/13862339.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  7. 【2】TensorFlow光速入门-数据预处理(得到数据集)

    本文地址:https://www.cnblogs.com/tujia/p/13862351.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  8. 【3】TensorFlow光速入门-训练及评估

    本文地址:https://www.cnblogs.com/tujia/p/13862357.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  9. 【5】TensorFlow光速入门-图片分类完整代码

    本文地址:https://www.cnblogs.com/tujia/p/13862364.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

随机推荐

  1. 消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?

    每个时代,都不会亏待会学习的人. 大家好,我是 yes. 今天我们来谈一谈消息队列的事务消息,一说起事务相信大家都不陌生,脑海里蹦出来的就是 ACID. 通常我们理解的事务就是为了一些更新操作要么都成 ...

  2. RabbitMQ小记(二)

    1.RabbitMQ相关介绍 (1)RabbitMQ整体上是一个生产者和消费者模型,主要负责接收.存储.转发消息.RabbitMQ整体结构图如下: (2)生产者:发送消息的一方,生产者创建一条消息,发 ...

  3. Tomcat 8.5中获取客户端真实IP及协议

    获取客户端真实IP ServletRequest接口提供了getRemoteAddr方法用于获取客户端IP,但是当客户端通过代理服务器访问后端服务器的时候,服务器调用getRemoteAddr方法会返 ...

  4. dhtmlxGantt独立安装的系统要求

    dhtmlxGantt库提供了使用导出作为在线服务从甘特图导出和导入数据的可能性. 您还可以通过在计算机上安装导出服务来本地导出甘特图.您需要确保系统满足系统要求才能使用导出模块: PNG / PDF ...

  5. Java知识系统回顾整理01基础05控制流程06break

    一.break break:结束循环 二.练习--直接结束当前for循环 public class HelloWorld { public static void main(String[] args ...

  6. 【题解】一本通例题 S-Nim

    \(\color{purple}{Link}\) \(\text{Solution:}\) 这个题就是给\(Nim\)游戏做了一个限制. 考虑一下\(\text{SG}\)函数:给定的局面下对应的\( ...

  7. Charles 模拟弱网

    1.Charles安装方法: 1)在官网下载安装: 2)输入如下注册码破解,Charles 4.2.7 目前版本,可用. Registered Name: https://zhile.io       ...

  8. Navicat连接MySQL报错-2059

    解释原因:据说,mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是 ...

  9. 《穷查理年鉴》金钱 & 生意 & 律师(关于金钱)

    金钱 025.钱还得快才会借得快. 030.钱和人有着复杂的友谊:人能让钱变坏,钱也能让人变坏. 034.绝望增加债务,勤奋偿还债务. 037.只有一无所有的人才会没有烦恼. 049.穷人为他的胃找食 ...

  10. Mac安装mongodb并启动

    1.选择自己版本下载,下载完成后进入Finder看下usr文件夹下是否有mongodb2.默认情况下是看不到需要我们输入指令:shift + command +G 输入 /usr/local 进入文件 ...