批量标准 - 提取运行平均值&在TensorFlow中运行方差

时间:2018-03-15 23:11:18

标签: python tensorflow google-cloud-ml batch-normalization

我正在尝试查看通过GCMLE(saved_model.pbassets/*& variables/*)导出的训练张量流模型的运行平均值和运行方差。这些值保存在图表中的哪个位置?我可以从tf.GraphKeys.TRAINABLE_VARIABLES访问gamma / beta值,但我无法在任何tf.GraphKeys.MODEL_VARIABLES中找到运行平均值和运行方差。运行平均值和运行方差是否存储在其他地方?

我知道在测试时(即Modes.EVAL),运行平均值和运行方差用于标准化输入数据,然后使用gamma和beta对标准化数据进行缩放和移位。我试图在推理时查看我需要的所有变量,但是我找不到运行平均值和运行方差。这些仅用于测试时间而非推理时间(Modes.PREDICT)吗?如果是这样,那就解释了为什么我在导出的模型中找不到它们,但我希望它们能够存在。

基于tf.GraphKeys,我尝试过tf.GraphKeys.MOVING_AVERAGE_VARIABLES之类的其他内容,但它们也是空的。我还在batch_normalization文档中看到了这一行“注意:在训练时,需要更新moving_mean和moving_variance。默认情况下,更新操作放在tf.GraphKeys.UPDATE_OPS中,因此需要将它们作为依赖项添加到train_op “。所以我接着尝试从我保存的模型中查看tf.GraphKeys.UPDATE_OPS,它们包含一个分配操作batch_normalization/AssignMovingAvg:0,但仍不清楚我从何处获取该值。

2 个答案:

答案 0 :(得分:1)

似乎移动平均值和移动方差存储在tf.GraphKeys.GLOBAL_VARIABLES内,看起来MODEL_VARIABLES中没有显示的原因是因为您需要使用tf.contrib.framework.local_variable

答案 1 :(得分:0)

除了#reese0106的答案之外,
如果您想获取BatchNorm的moving_mean,moving_variance
,则可以使用以下名称对其进行索引。< / p>

Sub CreateMatDump()
   Dim DumpFile As Workbook 'SAP Material Dump File
   Dim NRows As Long
   Dim SAPNum As Variant, MatType As Variant, MatGroup As Variant, UOM As Variant, MPN As Variant, MatDesc As Variant

   'Count rows
   NRows = Cells(Rows.Count, 14).End(xlUp).Row

   'Copy values to arrays
   SAPNum = Range(Cells(3, 2), Cells(NRows, 2)).Value
   MatType = Range(Cells(3, 6), Cells(NRows, 6)).Value
   MatGroup = Range(Cells(3, 11), Cells(NRows, 11)).Value
   UOM = Range(Cells(3, 10), Cells(NRows, 10)).Value
   MPN = Range(Cells(3, 14), Cells(NRows, 14)).Value
   MatDesc = Range(Cells(3, 9), Cells(NRows, 9)).Value

   'Open SAP Material Dump File
   Set DumpFile = Workbooks.Open(Filename:="R:\BURNABY\SAP Templates (Parts Upload & Batch PR Entry)\SAP Material Dump - Test.xlsx")

   'Print arrays to SAP Material Dump File
   DumpFile.Sheets("Sheet1").Range("A2").Resize(NRows, 1).Value = SAPNum.Value
   DumpFile.Sheets("Sheet1").Range("B2").Resize(NRows, 1).Value = MatType.Value
   DumpFile.Sheets("Sheet1").Range("C2").Resize(NRows, 1).Value = MatGroup.Value
   DumpFile.Sheets("Sheet1").Range("D2").Resize(NRows, 1).Value = UOM.Value
   DumpFile.Sheets("Sheet1").Range("E2").Resize(NRows, 1).Value = MPN.Value
   DumpFile.Sheets("Sheet1").Range("F2").Resize(NRows, 1).Value = MatDesc.Value

End Sub


ps。感谢您的问题和答案。我也解决了自己的问题。