add getFloatData function

This commit is contained in:
hangq 2020-08-24 17:05:11 +08:00
parent 6c309d8f62
commit 42c800251b
2 changed files with 27 additions and 3 deletions

View File

@ -15,10 +15,10 @@ fi
# copy arm64 so
cd ${TOP_PATH}/output/
rm -rf mindspore-lite-0.6.0
tar -zxvf mindspore-lite-0.6.0-runtime-arm64-cpu.tar.gz
rm -rf mindspore-lite-0.7.0
tar -zxvf mindspore-lite-0.7.0-runtime-arm64-cpu.tar.gz
mkdir -p ${BASE_PATH}/lib/
cp ${TOP_PATH}/output/mindspore-lite-0.6.0/lib/libmindspore-lite.so ${BASE_PATH}/lib/
cp ${TOP_PATH}/output/mindspore-lite-0.7.0/lib/libmindspore-lite.so ${BASE_PATH}/lib/
cp ${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so ${BASE_PATH}/lib/
# build jni so

View File

@ -16,6 +16,8 @@
package com.mindspore.lite;
import android.util.Log;
public class MSTensor {
private long tensorPtr;
@ -52,6 +54,10 @@ public class MSTensor {
return this.getData(this.tensorPtr);
}
public float[] getFloatData() {
return decodeBytes(this.getData(this.tensorPtr));
}
public void setData(byte[] data) {
this.setData(this.tensorPtr, data, data.length);
}
@ -69,6 +75,24 @@ public class MSTensor {
this.tensorPtr = 0;
}
private float[] decodeBytes(byte[] bytes) {
if (bytes.length % 4 != 0) {
Log.e("MS_LITE", "Length of bytes should be multi of 4 ");
return null;
}
int size = bytes.length / 4;
float[] ret = new float[size];
for (int i = 0; i < size; i=i+4) {
int accNum = 0;
accNum = accNum | (bytes[i] & 0xff) << 0;
accNum = accNum | (bytes[i+1] & 0xff) << 8;
accNum = accNum | (bytes[i+2] & 0xff) << 16;
accNum = accNum | (bytes[i+3] & 0xff) << 24;
ret[i/4] = Float.intBitsToFloat(accNum);
}
return ret;
}
private native long createMSTensor(int dataType, int[] shape, int shapeLen);
private native int[] getShape(long tensorPtr);