Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将批处理规范化从python转换为c#_C#_Python_.net_Tensorflow_Batch Normalization - Fatal编程技术网

如何将批处理规范化从python转换为c#

如何将批处理规范化从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

在过去的几个月里,我通过Python和Tensorflow构建了一个神经网络。该网络在大量数据上表现良好(在对120000条记录的数据集进行训练后,我的预测精度为85%)

我的神经网络利用了批量标准化、学习率衰减、辍学。。它使用Adam优化器来最小化损失。培训后,我通过一个保存程序存储我的模型,以存储批次标准化的均值/方差变量:

    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
中的类。后者是一个

免责声明:我是梯度的作者