当前位置: 首页 > 面试题库 >

每次迭代后处理时间越来越长(TensorFlow)

宋昕
2023-03-14
问题内容

我正在使用TensorFlow训练用于医学图像应用的CNN。

由于我没有大量数据,因此我尝试在训练循环中对训练批次进行随机修改,以人为地增加训练数据集。我用其他脚本编写了以下函数,并在我的培训批次中调用它:

def randomly_modify_training_batch(images_train_batch, batch_size):

    for i in range(batch_size):
        image = images_train_batch[i]
        image_tensor = tf.convert_to_tensor(image)

        distorted_image = tf.image.random_flip_left_right(image_tensor)
        distorted_image = tf.image.random_flip_up_down(distorted_image)
        distorted_image = tf.image.random_brightness(distorted_image, max_delta=60)
        distorted_image = tf.image.random_contrast(distorted_image, lower=0.2, upper=1.8)

        with tf.Session():
            images_train_batch[i] = distorted_image.eval()  # .eval() is used to reconvert the image from Tensor type to ndarray

return images_train_batch

该代码很好地适用于对我的图像进行修改。

问题是 :

在我的训练循环的每个迭代(前馈+反向传播)之后,将相同的功能稳定地应用到我的下一个训练批次中,将比上一次稳定地花费5秒。

处理大约需要1秒钟,经过10次以上的迭代后才需要一分钟以上的处理时间。

是什么原因导致速度变慢?我该如何预防?

(我怀疑带有,distorted_image.eval()但我不太确定。每次打开一个新会话吗?Te​​nsorFlow不应像我在“ with
tf.Session()”块中使用的那样自动关闭该会话吗?)


问题答案:

您在每次迭代中都调用该代码,因此,每次迭代都将这些操作添加到图形中。你不想那样做。您想在开始时构建图,并且在训练循环中仅执行它。另外,为什么您以后需要再次转换为ndimage,而不是一次将其放入TF图并仅使用张量?



 类似资料:
  • 我有一个简单的选择查询,返回200行。查询被迭代 1437 次。技术 : java 8, Spring靴 2.1.3.发布, 雄猫, Hibernate 在每次迭代时,查询都会变慢。第一个查询需要55毫秒,最后一个查询需要702毫秒 但是,当我在Junit“@RunWith(SpringJUnit4ClassRunner.class)”中启动相同的查询时,查询不会变慢。每次查询需要 - 37 毫秒

  • 我正在使用Firebase来保存我的数据。我试图在活动中分离Firebase方法和我的方法。例如,我已经创建了一个名为"Firebase method odsHelper"的类,在那里我想编写所有的Firebase方法。例如,"getAllUser"方法应返回列表中的所有用户。我唯一的问题是它不起作用。 我不知道我做错了什么,所以如果你们能帮我。 碎片 FirebaseMethodHelper类

  • 本文向大家介绍jquery代码规范让代码越来越好看,包括了jquery代码规范让代码越来越好看的使用技巧和注意事项,需要的朋友参考一下 最近学了jQuery,感觉这个jQuery是真的挺不错的,果然像他说的那样,少些多做!刚一入手感觉真是不错。但是写多了,就会发现这个代码一行居然能写那么长。而且可读性还不好。  有幸自己买了一本锋利的jQuery这本书。我就整理了下。到底在实际应用中怎么让自己的j

  • 我有一个Spring启动,Hibernate使用java应用程序。我部署它在一个jetty webserver与多个实例.如果我有太多(大于10)很多实例我得到 许多连接(10x实例)显示为空闲 ps: 实例的Hikari跟踪日志: 设置 没有记录任何有趣的事情。我认为这看起来很有趣-连接不可用 有什么办法可以调试这个吗?我也在java 7上,所以hikari 2.4.7

  • 本文向大家介绍订单表数据量越来越大导致查询缓慢, 如何处理?相关面试题,主要包含被问及订单表数据量越来越大导致查询缓慢, 如何处理?时的应答技巧和注意事项,需要的朋友参考一下 分库分表. 由于历史订单使用率并不高, 高频的可能只是近期订单, 因此, 将订单表按照时间进行拆分, 根据数据量的大小考虑按月分表或按年分表. 订单ID最好包含时间(如根据雪花算法生成), 此时既能根据订单ID直接获取到订单