!5056 add getDataFloat api for mindspore
Merge pull request !5056 from hangq/master
This commit is contained in:
commit
bfb7d4a25a
|
@ -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
|
||||
|
|
|
@ -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…
Reference in New Issue