Browse Source

add getFloatData function

tags/v1.0.0
hangq 5 years ago
parent
commit
42c800251b
2 changed files with 27 additions and 3 deletions
  1. +3
    -3
      mindspore/lite/java/build_aar.sh
  2. +24
    -0
      mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/MSTensor.java

+ 3
- 3
mindspore/lite/java/build_aar.sh 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


+ 24
- 0
mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/MSTensor.java 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);


Loading…
Cancel
Save