首页 文章

tensorflow lite推理给出了不同的结果然后定期推理

提问于
浏览
3

我有一个模型从图像中提取512个特征(数字在-1,1之间) . 我使用这里的指令将此模型转换为tflite float格式https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite

我使用原始模型和tflite模型对同一图像进行推理 .

我得到了不同的矢量结果,我期望得到非常相似的结果,因为我没有使用量化格式 . 根据我的理解,tf-lite应该只改善推理性能时间而不影响特征计算 .

我的问题是正常的吗?还有其他人遇到过吗?我在任何地方都没有找到任何关于此的话题 .

更新了代码 .

我有这个网络我训练(删除了很多项目,因为我无法共享完整的网络)占位符= tf.placeholder(name ='input',dtype = tf.float32,shape = [None,128,128,1])

with slim.arg_scope([slim.conv2d, slim.separable_conv2d],
                      activation_fn=tf.nn.relu, normalizer_fn=slim.batch_norm):
    net = tf.identity(placeholder)
    net = slim.conv2d(net, 32, [3, 3], scope='conv11')
    net = slim.separable_conv2d(net, 64, [3, 3], scope='conv12')
    net = slim.max_pool2d(net, [2, 2], scope='pool1')  # 64x64

    net = slim.separable_conv2d(net, 128, [3, 3], scope='conv21')
    net = slim.max_pool2d(net, [2, 2], scope='pool2')  # 32x32
    net = slim.separable_conv2d(net, 256, [3, 3], scope='conv31')

    net = slim.max_pool2d(net, [2, 2], scope='pool3')  # 16x16
    net = slim.separable_conv2d(net, 512, [3, 3], scope='conv41')
    net = slim.max_pool2d(net, [2, 2], scope='pool4')  # 8x8
    net = slim.separable_conv2d(net, 1024, [3, 3], scope='conv51')
    net = slim.avg_pool2d(net, [8, 8], scope='pool5')  # 1x1
    net = slim.dropout(net)
    net = slim.conv2d(net, feature_vector_size, [1, 1], activation_fn=None, normalizer_fn=None, scope='features')
    embeddings = tf.nn.l2_normalize(net, 3, 1e-10, name='embeddings')

bazel-bin / tensorflow / contrib / lite / toco / toco --input_file = / tmp / network_512.pb --input_format = TENSORFLOW_GRAPHDEF --output_format = TFLITE --output_file = / tmp / tffiles / network_512.tflite --inference_type = FLOAT --input_type = FLOAT --input_arrays = input --output_arrays = embeddings --input_shapes = 1,128,128,1

我使用python中的tensorflow运行network_512.pb,使用https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite/java/demo中的代码运行network_512.tflite,其中我修改了代码以加载我的网络并运行它 .

1 回答

  • 0

    我找到的更新 . 我做的测试是使用Demo app tensorflow提供并更改它以使用我的服装模型和提取功能,在那里我注意到功能值的差异 .

    一旦我在最新的android上手动编译了tf-lite c lib,并使用我使用的相同流程运行流程(这是TF-C API,直到现在)我得到的功能几乎相同 .

    没有时间调查哪里来了差异 . 但我现在很开心

相关问题