TensorFlow模型变量重用

2023-11-05

TensorFlow模型变量重用问题

加载模型及检测的.py
# predict.py

import numpy as np
import tensorflow as tf
from PIL import Image
import time

import fcrn

def predict(model_data_path, image_path , png_path):
    # Default input size
    height = 228
    width = 304
    channels = 3
    batch_size = 1
    
    # Read image
    try:
        img = Image.open(image_path)
    except:
        str1 = '无法打开图像'
        str2 = '请检查图像是否完整'
        return str1, str2

    img_format = img.format
    if img_format not in ['jpeg', 'JPEG']:
        str1 = '图像不是jpg格式'
        str2 = '请重新输入jpg图像'
        return str1, str2
    
    img = img.resize([width, height], Image.ANTIALIAS)
    img = np.array(img).astype('float32')
    img = np.expand_dims(np.asarray(img), axis=0)
   
    # Create a placeholder for the input image
    input_node = tf.placeholder(tf.float32, shape=(None, height, width, channels))
    
    # Construct the network
    net = fcrn.ResNet50UpProj({'data': input_node}, batch_size, 1, False)
        
    with tf.Session() as sess:
        # Load the converted parameters
        # print('Loading the model')

        # Use to load from ckpt file
        time1 = time.time()
        saver = tf.train.Saver()     
        saver.restore(sess, model_data_path)
        time2 = time.time()
        print('加载模型时间:', time2 - time1)

        # Use to load from npy file
        #net.load(model_data_path, sess) 

        # Evalute the network for the given image
        pred = sess.run(net.get_output(), feed_dict={input_node: img})

        max_depth = pred[0, :, :, 0].max()
        min_depth = pred[0, :, :, 0].min()

        # print(max_depth, min_depth)

        # 深度转灰度
        png_array = (pred[0, :, :, 0] - min_depth) / (max_depth - min_depth) * 255.0

        # 灰度转深度系数
        alpha = (max_depth - min_depth) / 255.0
        beta = min_depth

        # png_array = pred[0, :, :, 0] / max_depth * 255

        depth_png = Image.fromarray(np.uint8(png_array))
        depth_png.save(png_path)

        return alpha, beta
测试.py
import predict

model = './ckpt/NYU_FCRN.ckpt'

image_path1 = './test_image/test1.jpg'
png_path1 = './test1.png'

image_path2 = './test_image/test2.jpg'
png_path2 = './test2.png'

image_path3 = './test_image/test3.jpg'
png_path3 = './test3.png'

x, y = predict_new_new.predict(model, image_path1, png_path1)
print(x, y)
print('\n')


x, y = predict_new_new.predict(model, image_path2, png_path2)
print(x, y)
print('\n')


x, y = predict_new_new.predict(model, image_path3, png_path3)
print(x, y)
print('\n')

报错
ValueError: Variable conv1/weights already exists, disallowed.
 Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? 
 Originally defined at:
解决办法

在with tf.Session() as sess: 下面加一句
tf.get_variable_scope().reuse_variables()就行了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow模型变量重用 的相关文章

随机推荐

  • 关于AVFrame的理解

    玩FFMpeg绕不开AVFrame AVFrame结构体复杂 咱们不做深究 搞懂怎么用就可以了 下面几个相关函数至关重要 1 av frame alloc 申请AVFrame结构体空间 同时会对申请的结构体初始化 注意哦 这个函数只是创建A
  • 看了那么多搞钱项目,为何你仍未能赚到钱?

    今天来福宝盒分享一下你看了那么多搞钱项目 为何仍未能赚到钱 正所谓有些人就是不够清醒 不是故意装睡 今天我要让你清醒地认识到自己错过了这些赚钱的机会 让你瞬间感到羞愧 一 否定别人 这一点是最可怕无知的现象 当别人在分享一个赚钱的项目时 你
  • mariadb数据库简介

    mariadb 默认端口3306 什么是数据库 白话 用来存放数据的仓库 这个仓库只不过是按照一定的数据结构来组织 数据库模型分为三种 层次式数据库 网络式数据库 关系型数据库和非关系数据库 什么是关系型数据库 由很多二维表 x横y竖 组成
  • 天鹰优化器算法(AO)优化的BP神经网络预测,AO-BP回归预测

    清空环境变量 warning off 关闭报警信息 close all 关闭开启的图窗 clear 清空变量 clc 清空命令行 导入数据 P train xlsread data training set B2 G191 T train
  • 搭建Hexo博客中遇到的那些“坑”

    目录 前言 那些 坑 1 运行后网页显示代码 2 部署后提示 ERROR Deployer not found git 3 提示hexo INFO Validating config 4 提示什么我忘记记录下来了 总之是因为版本过低 5 B
  • matlab 如何读入超大文本文件

    通常 简单的 importdata 被大家广泛使用 因其调用简单 使用方便 其格式如下 y importdata path file name txt 可以看出 这个封装好的函数 只要给定文件的路径及文件名就可以顺利成为我们所需的数据 但是
  • 浅谈TCP拥塞控制:慢启动和拥塞避免、快速重传和快速恢复

    目录 1 拥塞的概念 2 流量控制 滑动窗口 3 拥塞控制 3 1 慢启动 3 2 拥塞避免 3 3 快速重传 3 4 快速恢复 声明 以下图片来源于网络 1 拥塞的概念 在这里我引用百度百科上面的概念 拥塞是指到达通信子网中某一部分的分组
  • 【C++】红黑树原理与插入实现(附图解与源码)

    红黑树 一 前言 二 什么是红黑树 1 概念 2 性质 三 构建一个红黑树 1 枚举两种颜色 2 定义红黑树节点 3 搭建红黑树 四 插入 1 查找插入位置 2 调整红黑树 插入时父节点为黑 插入时父节点为红 情况一 情况二 情况三 五 源
  • 【iar编译出现 Error[Pe147]的一种特殊情况:函数返回值与函数声明不一致】

    iar编译出现 Error Pe147 的一种特殊情况 函数返回值与函数声明不一致 错误说明 错误原因 解决方案 错误说明 在实现某一个函数时 定义了一个Struct MidFunT MidFun的局部变量 编译正常 将Struct Mid
  • Python之selenium,使用webdriver模拟登录网站(含验证码)

    一 前言 前段时间做了一个小项目 其中有一段需要自动获取网站后台的数据 但是这个网站没有任何提供给开发者的API 所以只能靠自己去探索 起初想着用发送请求的方式去模拟登陆 获取cookies 从而再获取网站后台数据 但是因为自己太菜了一些原
  • Java Collection源码总结 Collection源码注释翻译和解析中英文对照版

    版本 JDK8 JDK1 8 Collection接口源码重点 1 集合层次结构中的根接口 集合表示一组对象 称为其元素 某些集合允许重复元素 而其他集合则不允许 有些是有序的 有些是无序的 2 该接口类定义了各种规范包括方法规范和抛出异常
  • 形象易懂讲解算法II——压缩感知

    作者 咚懂咚懂咚 链接 https zhuanlan zhihu com p 22445302 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 之前曾经写过一篇关于小波变换的回答 能不能通俗的讲解下傅立叶分析
  • STEAM 教育相关书籍

    一 书籍 1 神奇的逻辑思维游戏书 激活5 13岁孩子的逻辑脑 https book douban com review 9776055 2 亚马逊儿童科学工程书NO 1 STEAM KIDS 这本书提供50多个科学 技术 工程 数学和艺术
  • android 自定义图片裁剪,[Android开发]造轮子——自定义图片裁剪工具

    矩形裁剪框 裁剪结果 圆形裁剪框 裁剪结果 自适应 实现的成员比较简单 各个类的职责 ImageTouchView 负责图片的显示 单指移动图片 双指缩放图片 自适应裁剪框 最后根据ClipFrameView的接口获取裁剪框的位置和大小进行
  • Games101 Lecture16 Ray Tracing 4笔记

    直接用大佬笔记 不重复造轮子 当然我也写不出这么详细的笔记 理论 从零开始学图形学 写一个光线追踪渲染器 一 渲染方程与BxDF 从零开始学图形学 写一个光线追踪渲染器 二 微表面模型与代码实现 代码实现 GAMES101 现代计算机图形学
  • Redis 连接命令

    Redis 命令用于在 redis 服务上执行操作 要在 redis 服务上执行命令需要一个 redis 客户端 Redis 客户端在我们之前下载的的 redis 的安装包中 语法 Redis 客户端的基本语法为 启动 redis 客户端
  • ubuntu16.04安装cmake-3.8.1最靠谱的方法(ubuntu下安装指定版本cmke)

    1 问题描述 2 cmake安装五种方法 法一 下载cmake二进制安装包 配置路径 亲测有效 法二 cmake源码编译 注意和法一区别 法三 apt安装 法四 在原基础上升级版本 法五 ppa安装 1 问题描述 在配置OpenMVS时 报
  • 【vue+El-element】实现todolist

    好像拖更了很久 很抱歉 最近想了一下css和js等内容还是不总结了 本来内容就多 不是一篇博客能说完的 而且我也只学了皮毛 以后还是通过实例的方式来分享一下学过的东西 希望能帮到大家 目录 一 实现功能 二 实现方法 1 数据的传递 2 按
  • 'WebDriver' object has no attribute 'error' 问题已解决

    实例化的过程中传错参数所致 将logger的参数传给了driver 将传参的顺序调换即可
  • TensorFlow模型变量重用

    TensorFlow模型变量重用问题 加载模型及检测的 py predict py import numpy as np import tensorflow as tf from PIL import Image import time i