当前位置: 首页 > 知识库问答 >
问题:

如果batch\u size等于1 in tf。图层。batch\u normalization(),是否正常工作?

乌俊健
2023-03-14

每个人我正在使用tensorflow 1.4来训练一个类似U-net的模型。由于硬件的限制,在培训时,batch\u大小只能设置为1,否则会出现OOM错误。

我的问题来了。在这种情况下,当batch\u size等于1时,tf。图层。batch\u normalization()工作正常(表示移动平均值、移动方差、gamma、beta)?小batch\u大小是否会使其工作不稳定?

在我的工作中,我在训练时设置训练=真,在测试时设置训练=假。培训时,我使用

logits = mymodel.inference()
loss = tf.mean_square_error(labels, logits)
updata_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
    train_op = optimizer.minimize(loss)
...

saver = tf.train.Saver(tf.global_variables())
with tf.Session() as sess:
    sess.run(tf.group(tf.global_variables_initializer(), 
                      tf.local_variables_initializer()))
    sess.run(train_op)
    ...
    saver.save(sess, save_path, global_step)

测试时,我使用:

logits = model.inference()
saver = tf.train.Saver()

with tf.Session() as sess:
    saver.restore(sess, checkpoint)
    sess.run(tf.local_variables_initializer())
    results = sess.run(logits)

谁能告诉我,我用错了吗?batch\u大小的影响程度等于tf中的1。图层。batch\u normalization()?

任何帮助都将不胜感激!提前谢谢。

共有1个答案

孟选
2023-03-14

是,<代码>tf。图层。batch\u normalization()可处理单个元素的批次。对这些批执行批规范化实际上被称为实例规范化(即单个实例的规范化)。

@如果您想了解更多,Maxim发表了一篇关于实例规范化的文章。您还可以在web和文献中找到更多理论,例如实例规范化:快速样式化缺少的要素。

 类似资料:
  • 我试图将预训练的BN权重从pytorch模型复制到其等效的Keras模型,但我一直得到不同的输出。 我阅读了Keras和Pytorch BN文档,我认为差异在于它们计算“平均值”和“var”的方式。 Pytorch: 平均值和标准偏差是按小批量的每个尺寸计算的 来源:Pytorch BatchNorm 因此,他们对样本进行平均。 Keras: 轴:整数,应规格化的轴(通常是特征轴)。例如,在具有d

  • 我有一个要求,我需要根据rest调用处理文件,在rest调用中我得到文件名,我将它添加到job参数中,并在创建bean时使用它。 我正在为(读者,作家)创建步骤范围Beans,并使用作业参数。我在一个新的线程中开始这项工作,因为我使用异步任务Excepper来启动这项工作,我的问题是当我们定义时,如何在Spring创建bean

  • 我们从Spring Batch 2.1.7迁移到Spring Batch 3.0.6,但收到以下jboss启动错误: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;坏SQL语法[选择E.JOB_EXECUTION_ID,E.START_TIME,E.END_TIME,E.STATUS,E.EXI

  • 我试图将我现有的基于XML的spring批处理项目转换为基于java的配置。@Autowired对象返回null,尽管我已经在基本包中提到了componentscan。

  • 我开发了一个spring批处理,用于将用户加载到DB中。我能够从提供主类的eclipse中作为Java应用程序运行它,但不能通过unix服务器上的shell脚本运行批处理。我得到了这个例外: 我在job.xml文件中声明了bean,如下所示

  • 您可以创建可执行的JAR文件,并使用Maven或Gradle命令运行Spring Boot应用程序,如下所示 - 对于Maven,您可以使用下面给出的命令 - mvn clean install 在“BUILD SUCCESS”之后,您可以在目标目录下找到JAR文件。 对于Gradle,您可以使用如下所示的命令 - gradle clean build 在“BUILD SUCCESSFUL”之