小编nin*_*nja的帖子

无法使用BatchNorm层导入冻结图

我已经训练基于这个模型Keras 回购

训练后,我将模型另存为检查点文件,如下所示:

 sess=tf.keras.backend.get_session() 
 saver = tf.train.Saver()
 saver.save(sess, current_run_path + '/checkpoint_files/model_{}.ckpt'.format(date))
Run Code Online (Sandbox Code Playgroud)

然后,我从检查点文件中还原图形,并使用标准tf Frozen_graph脚本将其冻结。当我想恢复冻结的图时,出现以下错误:

Input 0 of node Conv_BN_1/cond/ReadVariableOp/Switch was passed float from Conv_BN_1/gamma:0 incompatible with expected resource

如何解决此问题?

编辑:我的问题与问题有关。不幸的是,我无法使用替代方法。

编辑2:我在github上打开了一个问题,并创建了要点来重现该错误。 https://github.com/keras-team/keras/issues/11032

keras tensorflow

8
推荐指数
1
解决办法
2078
查看次数

CPU方面的性能瓶颈

我正在使用语义分割架构进行研究。我需要加快培训速度,但不知道在哪里进一步寻找。

一般信息

  • 形状的图像(512,512,3)
  • 提供4个GPU GeForce GTX 1080 11 GB GPU内存
  • 1个可用的CPU Intel(R)Xeon(R)CPU E5-2637 v4#3.50GHz
  • 足够的内存
  • 我用Keras
  • 我使用轻量数据预处理(主要是裁剪,没有太多的数据扩充)

我曾尝试过有关数据加载的不同方法,但每一次瓶颈似乎都是CPU而不是GPU。我跑nvidia-smihtop看到利用。

到目前为止我尝试过的是:

  • Keras +定制DataGenerator带有8个工作人员和1个GPU model.fit_generator(generator=training_generator,use_multiprocessing=True, workers=8)

  • Keras + tf.data.dataset包含从原始图像加载的数据 model.fit(training_dataset.make_one_shot_iterator(),...)

    我尝试了两种预取方式:
    dataset = dataset.prefetch(tf.contrib.data.AUTOTUNE)
    dataset = dataset.apply(tf.contrib.data.prefetch_to_device('/gpu:0'))

  • Keras + tf.data.dataset,数据是从tf.Records
    => 加载的。

发现

  • 使用多个GPU(使用Keras相当容易)会减慢训练速度,因为开销计算会占用CPU。
  • 令人惊讶的是,普通的DataGenerator方法(没有tf.data.dataset)是目前最快的方法。
  • 每种方法都可以在很短的时间内使GPU利用率提高100%。但有时也为0%。

现在,我的处理链看起来像这样:

磁盘上的数据-> CPU将数据加载到RAM中-> CPU执行数据预处理-> CPU将数据移至GPU-> GPU执行训练步骤

因此,加快培训速度的唯一方法是预先进行所有预处理,然后将文件保存到磁盘上(数据扩充将非常庞大)。然后使用tf.Records有效地加载文件。

您还有其他想法如何提高培训速度?

更新资料

我已经用两种模型测试了管道。

简单模型

在此处输入图片说明

复杂模型

在此处输入图片说明

绩效结果

我训练了3个时期的2个模型,每个时期140个步骤(批量大小= 3)。这是结果。

  1. 原始图像数据=> Keras.DataGenerator
    简单模型:126s
    复杂模型:154s

  2. 原始图像数据=> tf.data.datasets
    简单模型:208s
    复杂模型:215s

数据生成器

辅助功能

def load_image(self,path):
    image = cv2.cvtColor(cv2.imread(path,-1), cv2.COLOR_BGR2RGB)
    return image …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow

6
推荐指数
1
解决办法
2445
查看次数

标签 统计

keras ×2

tensorflow ×2