【发布时间】:2019-05-15 17:44:05
【问题描述】:
抱歉打扰:
我对 keras 函数感到困惑:fit_generator
我使用自定义生成器生成 (image,seg_image) 训练用的
仔细看你可以看到get_seg()函数的内部
我把print(path) ann 的路径就是
读取图片的路径
从数据来看,另一个意图是我想知道如何
fit_generator()从生成器获取数据
#import all the stuff
def get_seg(#parameters ):
print(path) #to track when this function is called
return seg_image #for training
#pre-processing image
def getimage(#parameters):
#do something to image
return the imgage #for training
def data_generator():
#load all the data for training
zipped =cycle(zip(images,segmentations))
while True:
X = []
Y = []
for _ in range(batch_size) :
im , seg = next(zipped)
X.append(getimage(#parameters))
Y.append(get_seg(#parameters))
yield np.array(X) , np.array(Y)
#create an generator
G = data_generator(#parameters)
#start training
for ep in range( epochs ):
m.fit_generator( G , steps_per_epoch=512,
epochs=1,workers=1)
当我开始训练时,我得到了真正出乎意料的结果
通过培训:终端长这样: 它打印出 24 组路径
它从自定义data_generator获取数据的拳头
data/train/0000_mask.png
data/train/0001_mask.png
data/train/0002_mask.png
data/train/0003_mask.png
data/train/0004_mask.png
data/train/0005_mask.png
data/train/0006_mask.png
data/train/0007_mask.png
data/train/0008_mask.png
data/train/0009_mask.png
data/train/0010_mask.png
data/train/0011_mask.png
data/train/0012_mask.png
data/train/0013_mask.png
data/train/0014_mask.png
data/train/0015_mask.png
data/train/0016_mask.png
data/train/0017_mask.png
data/train/0018_mask.png
data/train/0019_mask.png
data/train/0020_mask.png
data/train/0021_mask.png
data/train/0022_mask.png
data/train/0023_mask.png
然后: 我相信培训从这里开始。
1/512 [..............................] - ETA: 2:14:34 - loss: 2.5879 - acc: 0.1697
再次加载数据(图像)
data/train/0024_mask.png
data/train/0025_mask.png
512(steps_per_epoch)后表示下一轮训练
开始,它只会在训练前打印下一个 24 路径 ....
我想知道为什么会这样? keras是这样的吗
有效吗?实际通过网络之前加载数据?
还是我误解或错过了一些基本知识?
【问题讨论】:
-
顺便说一句,batch_size=2,如果我将它设置为 1,它仍然会在训练前打印 12 条路径....
-
看来 keras 总是比
max_queue_size多加载 2 个批次。我不确定它为什么会发生。
标签: python tensorflow keras deep-learning