使用生成器和多线程为Keras训练模型的fit函数提供数据

#导入线程包
from multiprocessing.dummy import Pool as ThreadPool

##############################
#定义需要放到线程中去执行的函数,这个函数又输入参数,有返回值
#1,带一个参数: Parameter_List ,
#2,该线程函数返回“一对儿”数据,分别是图片与标注
###############################
def load_seq_crop_data_masktumor_try(Parameter_List): #在线程里面执行的函数,用于数据增广
。。。
return cropp_img, cropp_tumor #线程函数的返回值
##############################
#构造线程环境
#Pool 构造线程对象 : pool=Pool(threads_num)
#用线程对象调用fun函数,携带参数params ,并返回结果results:

#     result_list  = pool.map(fun,patrams)
# 禁止添加新的线程  :pool.close() 
# 主进程阻塞等待子进程执行结束、返回结果并退出 pool.join()  
# 处理线程执行结果:
#   for idx in range(len(result_list)):
#         a =   result_list[idx]
#         ….

##############################
#生成器调用结构:

#  while 1:
#      。。。。
#       用线程处理数据
#       X = 。。。
#       Y = 。。。
#      。。。。
#     yield (X,Y) #生成器 与while 1配合

################################

#在keras的fit函数中使用多线程:keras内部同样使用线程或者进程将生成器的数据送入训练引擎
#generate_arrays_from_file()是一个生成器函数,在这个函数中使用多线程机制处理数据增广等操作

# max_queue_size=2, workers=2是keras的fit函数自带的队列---线程机制,用于将生成器的数据宋儒道##网络训练函数,网络训练函数从队列中获取数据。

model.fit_generator(
generate_arrays_from_file(args.b, trainidx, img_list, tumor_list, tumorlines, liverlines,
tumoridx, liveridx, minindex_list, maxindex_list),
steps_per_epoch=steps, epochs= 6000, verbose = 1,
callbacks = [model_checkpoint],
max_queue_size=2, workers=2, use_multiprocessing=True
)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值