概述
#导入线程包
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
)
最后
以上就是魁梧曲奇为你收集整理的使用生成器和多线程为Keras训练模型的fit函数提供数据的全部内容,希望文章能够帮你解决使用生成器和多线程为Keras训练模型的fit函数提供数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复