尝试多进程在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)无响应/暂停/无输出相关推荐

  1. ResNet在分别在Keras和tensorflow框架下的应用案例

    一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别的效果有着很大的影响,所以正常想法就是能把网络设计的越深越好, 但是事实上却不是这样,常规的网络的堆叠(plain netw ...

  2. 深度学习——残差神经网络ResNet在分别在Keras和tensorflow框架下的应用案例

    原文链接:https://blog.csdn.net/loveliuzz/article/details/79117397 一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别 ...

  3. tensorflow2caffe(3) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数

    版权声明:本文为博主原创文章,转载时请附加博文链接. https://blog.csdn.net/jiongnima/article/details/78382972 在前两期专栏tensorflow ...

  4. tensorflow2caffe(1) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数

    在前两期专栏tensorflow2caffe(1)和tensorflow2caffe(2)中,笔者向大家介绍了caffemodel文件类型下的参数架构和如何取出tensorflow框架下训练参数.在本 ...

  5. Pycharm中tensorflow框架下tqdm的安装

    基本环境 win 10 tensorflow-cpu pycharm // tensorflow程序里错误结果显示from tqdm import tqdm ImportError: cannot i ...

  6. Keras 和 Tensorflow 框架下五种视频分类

    目前视频分类是机器学习模式中独树一帜的挑战.今天我们就要来看看在Keras 和 Tensorflow 框架下的不同的视频行为识别策略,我们将会学着如何使用五深度学习的模式去学习UCF101数据组,具体 ...

  7. caffe与tensorflow框架下卷积的维度计算与一致性证明

      对于卷积运算,假设输入维度为iii,卷积核的维度为www,步长为sss,这里为了叙述方便仅描述一维且忽略pad(pad可以看做已经乘以2加到输入维度中去了).在caffe框架下,按照平移的原则一步 ...

  8. 同在服务器无响应,全部服务器无响应!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 谁来救救我哦!!!! 09/24/06 14:05:42: 正在连接到BiG BanG 9(80.239.200.108:3000)... 09/24/0 ...

  9. 【python】TensorFlow框架下CNN神经网络的花卉识别系统

    提前说明一下,本文的CNN神经网络模型是参考网上诸多相关CNN图像分类大牛的博客修改的,在模型的基础上,用python的Flask框架搭载了一个web页面用来可视化展示. 第一步,爬取图片数据集 用p ...

最新文章

  1. 万能 Transformer,你应该知道的一切
  2. Rook存储:Kubernetes中最优秀的存储
  3. 人造肌肉机械臂太逼真引热议,举7kg哑铃“肌肉”清晰可见,网友:《西部世界》...
  4. sublime Text 3实用功能和常用快捷键收集
  5. 史上最完整Java中将File转化为MultipartFile的方法(附阿里云腾讯云对象存储API对照)
  6. Linux替代Windows系统软件比拼
  7. 简单理解const是锁还是不锁!
  8. c语言ABCDEF前中后序遍历,c语言实现二叉树及前中后序遍历
  9. 前端正则表达式汇总整理
  10. 视频拍摄和剪辑经验分享|南京
  11. usb摄像头android录像软件,USB摄像头app
  12. 【小程序开发原创】小程序裁剪图片上传头像,二维码源码
  13. 量化指标公式源码_量化指标副图指标 源码 通达信 贴图 无未来
  14. android 汉字转字节,安卓汉字转拼音
  15. OGRE加载天龙八部场景
  16. ARM Neon Intrinsics 学习指北:从入门、进阶到学个通透
  17. 网站使用CDN加速的5个优势
  18. 【玩转c++】多态深度刨析
  19. 智博通 ZBT WG2626原机编程器
  20. 常用的三种线性模型算法--线性回归模型、岭回归模型、套索回归模型

热门文章

  1. powerquery分组_power query 如何累计求和?如何分组分条件?
  2. 天荒地老修仙功-第六部:Spring Cloud Eureka——服务发现
  3. 湘潭2017 ccpc中南地区邀请赛 Determinant 高斯约当求逆矩阵
  4. 高性能服务器dyna软件重启动,LSDYNA 中的完全重启动是什么功能,实际使用过程中,如何实现完全重启动...
  5. 微信小程序本地图片在开发工具显示手机预览不显示
  6. 2022年度安徽省职业院校技能大赛中职组“网络搭建与应用”赛项竞赛试题
  7. 安徽省计算机考试准考证查询
  8. python学习笔记之自定义函数
  9. iOS开发-QQ好友列表展示
  10. Maven创建聚合项目