首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for循环中拟合模型是否等同于使用epochs>1?

在for循环中拟合模型是否等同于使用epochs>1?
EN

Data Science用户
提问于 2022-02-12 12:31:05
回答 1查看 420关注 0票数 2

我正在使用tensorflow来训练一个网络来完成图像分割任务,并且我有一个关于不同时代之间的model.fit行为的问题,特别是:

用512个历元调用model.fit和调用model.fit 512次有什么区别吗?

这里是我的代码的简化版本,以防有帮助。首先,一些设置:

代码语言:javascript
复制
# Create image generators for dataset augmentation
imgGen = ImageDataGenerator(**data_augmentation_parameters)
maskGen = ImageDataGenerator(**data_augmentation_parameters)
seed = random.randint(0, 1000000000)
imgIterator = imgGen.flow(img, seed=seed, shuffle=False, batch_size=batch_size)
maskIterator = maskGen.flow(mask, seed=seed, shuffle=False, batch_size=batch_size)

# Load network structure from model.py file
network = unet(net_scale = 1)

# Calculate # of iterations
steps_per_epoch = int(num_samples / batch_size)

迭代拟合的两种方法:

拟合方法1:

代码语言:javascript
复制
network.fit(
    ((imgBatch, maskBatch) for imgBatch, maskBatch in zip(imgIterator, maskIterator)),
    steps_per_epoch=steps_per_epoch,
    epochs=512,
)

拟合方法2:

代码语言:javascript
复制
for epoch in range(512):
    network.fit(
        ((imgBatch, maskBatch) for imgBatch, maskBatch in zip(imgIterator, maskIterator)),
        steps_per_epoch=steps_per_epoch,
        epochs=1,
    )

我认为这个问题和我的一样,但我不明白一个答案是如何适用于这个问题的--我只是想知道指定一个纪元数>1和在for循环中运行model.fit之间是否存在一些内部差异。

谢谢!

EN

回答 1

Data Science用户

发布于 2022-02-12 23:55:34

根据用于Keras的github存储库中的问题,是的,您应该能够在循环中以您想要的方式递增地训练您的模型。尽管如此,您应该在这两种方式上运行一个测试,看看它是否会产生不同的结果。

票数 3
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/108099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档