tensorflow框架下,多进程model.predict(x)无响应/暂停/无输出
尝试多进程在tensorflow下运行函数,函数功能中包括model.predict(x),但是在windows环境中运行正常,linux中无法运行,会出现程序无响应,调试后发现在子进程函数中model.predict(x)执行时程序出现问题。
参考代码如下,注意到此时model声明在__main__父进程中,并作为参数传给子进程。另一种情况是在子进程中使用全局变量model。或者可能存在从其他模块中引入的有关model变量。
from keras.preprocessing import image
from keras.models import load_modelimport numpy as np
import os,gc,multiprocessingdef load_image(img_path):img = image.load_img(img_path, target_size=(28, 28), color_mode="grayscale")input_img_data = image.img_to_array(img)input_img_data = input_img_data.reshape(1, 28, 28, 1)input_img_data = input_img_data.astype('float32')input_img_data /= 255return input_img_datadef run(pict_path,model):#global modelpreprocessed_input = load_image(pict_path)predictions=model.predict(preprocessed_input)top_1 = (np.argmax(predictions),np.max(predictions))print('Predicted class:')print('%s with probability %.2f' % (top_1[0], top_1[1]))if __name__=='__main__':picts=os.listdir("./mnist")model = load_model('Model3.h5')# 注意此时model声明在子进程外部(父进程声明后作为参数传入)for whichone,p in enumerate(picts):#循环读取图片预测pict_path="./mnist/"+picts[0]run_p=multiprocessing.Process(target=run,args=[pict_path,model])run_p.start()run_p.join()gc.collect()
该代码在linux(ubuntu)中应该无法运行,但是在windows上应该能运行。
解决方法如下
将model声明写在子进程的函数中,才能正常运行。
代码如下,将model声明在子进程内部。现在只测试过load_model()函数,如果直接调用变量尚未尝试。
# -*- coding: utf-8 -*-
from keras.preprocessing import image
from keras.models import load_modelimport numpy as np
import os,gcdef load_image(img_path):img = image.load_img(img_path, target_size=(28, 28), color_mode="grayscale")input_img_data = image.img_to_array(img)input_img_data = input_img_data.reshape(1, 28, 28, 1)input_img_data = input_img_data.astype('float32')input_img_data /= 255# input_img_data = preprocess_input(input_img_data) # final input shape = (1,224,224,3)return input_img_dataimport multiprocessing,gcdef run(pict_path):model = load_model('Model3.h5')#model声明在子进程内部preprocessed_input = load_image(pict_path)#"./minst/729_4.png")predictions=model.predict(preprocessed_input)top_1 = (np.argmax(predictions),np.max(predictions))print('Predicted class:')print('%s with probability %.2f' % (top_1[0], top_1[1]))if __name__=='__main__':picts=os.listdir("./mnist")for whichone,p in enumerate(picts):#for p in x4test:#print(whichone)pict_path="./mnist/"+picts[0]run_p=multiprocessing.Process(target=run,args=[pict_path])run_p.start()run_p.join()gc.collect()
当然,主要问题的解决思路参考https://stackoverflow.com/questions/70496446/parallelizing-keras-model-predict-using-multiprocessing
BTW,讲述干货和知识的收费能理解,怎么有人的连解决bug的文章怎么还要收费的啊?离谱奥
成功解决算法模型在预测的时候model.predict(X_test)其预测功能戛然而止且代码无bug的无提示的无法继续向下运行代码而在当前直接退出
tensorflow框架下,多进程model.predict(x)无响应/暂停/无输出相关推荐
- ResNet在分别在Keras和tensorflow框架下的应用案例
一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别的效果有着很大的影响,所以正常想法就是能把网络设计的越深越好, 但是事实上却不是这样,常规的网络的堆叠(plain netw ...
- 深度学习——残差神经网络ResNet在分别在Keras和tensorflow框架下的应用案例
原文链接:https://blog.csdn.net/loveliuzz/article/details/79117397 一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别 ...
- tensorflow2caffe(3) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数
版权声明:本文为博主原创文章,转载时请附加博文链接. https://blog.csdn.net/jiongnima/article/details/78382972 在前两期专栏tensorflow ...
- tensorflow2caffe(1) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数
在前两期专栏tensorflow2caffe(1)和tensorflow2caffe(2)中,笔者向大家介绍了caffemodel文件类型下的参数架构和如何取出tensorflow框架下训练参数.在本 ...
- Pycharm中tensorflow框架下tqdm的安装
基本环境 win 10 tensorflow-cpu pycharm // tensorflow程序里错误结果显示from tqdm import tqdm ImportError: cannot i ...
- Keras 和 Tensorflow 框架下五种视频分类
目前视频分类是机器学习模式中独树一帜的挑战.今天我们就要来看看在Keras 和 Tensorflow 框架下的不同的视频行为识别策略,我们将会学着如何使用五深度学习的模式去学习UCF101数据组,具体 ...
- caffe与tensorflow框架下卷积的维度计算与一致性证明
对于卷积运算,假设输入维度为iii,卷积核的维度为www,步长为sss,这里为了叙述方便仅描述一维且忽略pad(pad可以看做已经乘以2加到输入维度中去了).在caffe框架下,按照平移的原则一步 ...
- 同在服务器无响应,全部服务器无响应!!!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 谁来救救我哦!!!! 09/24/06 14:05:42: 正在连接到BiG BanG 9(80.239.200.108:3000)... 09/24/0 ...
- 【python】TensorFlow框架下CNN神经网络的花卉识别系统
提前说明一下,本文的CNN神经网络模型是参考网上诸多相关CNN图像分类大牛的博客修改的,在模型的基础上,用python的Flask框架搭载了一个web页面用来可视化展示. 第一步,爬取图片数据集 用p ...
最新文章
- 万能 Transformer,你应该知道的一切
- Rook存储:Kubernetes中最优秀的存储
- 人造肌肉机械臂太逼真引热议,举7kg哑铃“肌肉”清晰可见,网友:《西部世界》...
- sublime Text 3实用功能和常用快捷键收集
- 史上最完整Java中将File转化为MultipartFile的方法(附阿里云腾讯云对象存储API对照)
- Linux替代Windows系统软件比拼
- 简单理解const是锁还是不锁!
- c语言ABCDEF前中后序遍历,c语言实现二叉树及前中后序遍历
- 前端正则表达式汇总整理
- 视频拍摄和剪辑经验分享|南京
- usb摄像头android录像软件,USB摄像头app
- 【小程序开发原创】小程序裁剪图片上传头像,二维码源码
- 量化指标公式源码_量化指标副图指标 源码 通达信 贴图 无未来
- android 汉字转字节,安卓汉字转拼音
- OGRE加载天龙八部场景
- ARM Neon Intrinsics 学习指北:从入门、进阶到学个通透
- 网站使用CDN加速的5个优势
- 【玩转c++】多态深度刨析
- 智博通 ZBT WG2626原机编程器
- 常用的三种线性模型算法--线性回归模型、岭回归模型、套索回归模型
热门文章
- powerquery分组_power query 如何累计求和?如何分组分条件?
- 天荒地老修仙功-第六部:Spring Cloud Eureka——服务发现
- 湘潭2017 ccpc中南地区邀请赛 Determinant 高斯约当求逆矩阵
- 高性能服务器dyna软件重启动,LSDYNA 中的完全重启动是什么功能,实际使用过程中,如何实现完全重启动...
- 微信小程序本地图片在开发工具显示手机预览不显示
- 2022年度安徽省职业院校技能大赛中职组“网络搭建与应用”赛项竞赛试题
- 安徽省计算机考试准考证查询
- python学习笔记之自定义函数
- iOS开发-QQ好友列表展示
- Maven创建聚合项目