如何将批处理规范化从python转换为c#
在过去的几个月里,我通过Python和Tensorflow构建了一个神经网络。该网络在大量数据上表现良好(在对120000条记录的数据集进行训练后,我的预测精度为85%) 我的神经网络利用了批量标准化、学习率衰减、辍学。。它使用Adam优化器来最小化损失。培训后,我通过一个保存程序存储我的模型,以存储批次标准化的均值/方差变量:如何将批处理规范化从python转换为c#,c#,python,.net,tensorflow,batch-normalization,C#,Python,.net,Tensorflow,Batch Normalization,在过去的几个月里,我通过Python和Tensorflow构建了一个神经网络。该网络在大量数据上表现良好(在对120000条记录的数据集进行训练后,我的预测精度为85%) 我的神经网络利用了批量标准化、学习率衰减、辍学。。它使用Adam优化器来最小化损失。培训后,我通过一个保存程序存储我的模型,以存储批次标准化的均值/方差变量: saver = tf.compat.v1.train.Saver(tf.global_variables()) saver.save(sess, "se
saver = tf.compat.v1.train.Saver(tf.global_variables())
saver.save(sess, "sessionSave")
在寻找将此模型转换为c#的正确方法之后,我找到了.NET的Tensorflow实现(SciSharp)。但是我找不到批处理规范化的实现。在这种特定情况下,我需要转换以下python代码调用:
Z_BN = tf.contrib.layers.batch_norm(Z, is_training=train,updates_collections=ops.GraphKeys.UPDATE_OPS, scope="scope"+str(i), reuse=True)
如果有办法转换这个调用,我还需要以不同的方式解决保存的均值/方差变量的问题。我想,我自己无法实现批处理规范化。是否有人可以提供此需求的实现?如果您只需要在.NET中使用模型进行推理,那么将其转换为一些广泛使用的格式(如ONNX)就足够了,您可以在以后与ML.NET一起使用: 您也可以尝试通过ML.NET直接使用该型号,但您的里程可能会有所不同: 如果这两种方法都不适合您,或者您也需要从C#微调/训练模型,那么您可以尝试一种商业解决方案:,它将整个TensorFlow 1.15 API公开给.NET。尽管在这种情况下,您必须使用
tensorflow.keras.layers
或tensorflow.layers
中支持的BatchNormalization
类,而不是contrib
中的类。后者是一个
免责声明:我是梯度的作者