in react-native-pytorch-core/android/src/main/java/org/pytorch/rn/core/ml/processing/BaseIValuePacker.java [101:181]
protected void register(final PackerRegistry registry) {
// Pack
registry
.register(
"tuple",
(jobject, params, packerContext) ->
IValue.tupleFrom(
packArray(jobject.getJSONArray(JSON_ITEMS), params, packerContext)))
.register(
"scalar_bool",
(jobject, params, packerContext) -> IValue.from(jobject.getBoolean(JSON_VALUE)))
.register(
"scalar_long",
(jobject, params, packerContext) -> IValue.from(jobject.getLong(JSON_VALUE)))
.register(
"scalar_double",
(jobject, params, packerContext) -> IValue.from(jobject.getDouble(JSON_VALUE)))
.register("tensor", (jobject, params, packerContext) -> packTensor(jobject))
.register(
"tensor_from_image", (jobject, params, packerContext) -> packImage(jobject, params))
.register(
"tensor_from_string",
(jobject, params, packerContext) -> packString(jobject, packerContext))
.register(
"tensor_from_audio", (jobject, params, packerContext) -> packAudio(jobject, params));
// Unpack
registry
.register(
"tuple",
(ivalue, jobject, map, packerContext) ->
unpackArray(ivalue.toTuple(), jobject.getJSONArray(JSON_ITEMS), map, packerContext))
.register(
"list",
(ivalue, jobject, map, packerContext) ->
unpackArray(ivalue.toList(), jobject.getJSONArray(JSON_ITEMS), map, packerContext))
.register(
"dict_string_key",
(ivalue, jobject, map, packerContext) ->
unpackDictStringKey(
ivalue.toDictStringKey(), jobject.getJSONArray(JSON_ITEMS), map, packerContext))
.register(
"tensor", (ivalue, jobject, map, packerContext) -> unpackTensor(ivalue, jobject, map))
.register(
"scalar_long",
(ivalue, jobject, map, packerContext) ->
map.putInt(jobject.getString(JSON_KEY), (int) ivalue.toLong()))
.register(
"scalar_float",
(ivalue, jobject, map, packerContext) ->
map.putDouble(jobject.getString(JSON_KEY), ivalue.toDouble()))
.register(
"scalar_bool",
(ivalue, jobject, map, packerContext) ->
map.putBoolean(jobject.getString(JSON_KEY), ivalue.toBool()))
.register(
"argmax", (ivalue, jobject, map, packerContext) -> unpackArgmax(ivalue, jobject, map))
.register(
BaseIValuePacker.JSON_STRING,
(ivalue, jobject, map, packerContext) ->
map.putString(jobject.getString(JSON_KEY), ivalue.toStr()))
.register(
"tensor_to_image",
(ivalue, jobject, map, packerContext) ->
map.putMap(jobject.getString(JSON_KEY), unpackTensorToImage(ivalue)))
.register(
"tensor_to_string",
(ivalue, jobject, map, packerContext) ->
map.putString(
jobject.getString(JSON_KEY),
decodeTensorToString(ivalue, jobject, packerContext)))
.register(
"bert_decode_qa_answer",
(ivalue, jobject, map, packerContext) ->
map.putString(
jobject.getString(JSON_KEY), decodeBertQAAnswer(ivalue, packerContext)))
.register(
"bounding_boxes",
(ivalue, jobject, map, packerContext) ->
map.putArray(
jobject.getString("key"), decodeObjects(ivalue, jobject, packerContext)));
}