我有一个从图像中提取512个特征的模型(数字在-1,1之间)。 我使用这里的指令将此模型转换为tflite float格式 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite
我使用原始模型和tflite模型对同一图像进行推理。
我得到了不同的矢量结果,我期望得到非常相似的结果,因为我没有使用量化格式。根据我的理解,tf-lite应该只改善推理性能时间而不影响特征计算。
我的问题是正常的吗?还有其他人遇到过吗? 我在任何地方都没有找到任何相关主题。
已更新代码。
我有这个网络我训练过(删除了很多项目,因为我无法共享完整的网络) placeholder = 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和使用https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite/java/demo中的代码的network_512.tflite运行network_512.pb 我修改了代码以加载我的网络并运行它。
答案 0 :(得分:0)
我找到的更新。我做的测试是使用Demo app tensorflow提供并更改它以使用我的服装模型和提取功能,在那里我注意到功能值的差异。
一旦我在最新的android上手动编译了tf-lite c ++ lib,并使用我使用的相同流程运行流程(直到现在为TF-C API)我得到的功能几乎相同。
没有时间调查差异的来源。但我现在很开心