public Serializer putInt1_4Bytes(FieldBase field, int value) { buf.putInt1_4Bytes(value); return this; } public Serializer putInt2_4_8Bytes(FieldBase field, long value) { buf.putInt2_4_8Bytes(value); return this; }
private void encodeDimensions(GrowableByteBuffer buffer, List<TensorType.Dimension> sortedDimensions) { buffer.putInt1_4Bytes(sortedDimensions.size()); for (TensorType.Dimension dimension : sortedDimensions) { buffer.putUtf8String(dimension.name()); } }
@Override public void write(FieldBase field, TensorFieldValue value) { if (value.getTensor().isPresent()) { byte[] encodedTensor = TypedBinaryFormat.encode(value.getTensor().get()); buf.putInt1_4Bytes(encodedTensor.length); buf.put(encodedTensor); } else { buf.putInt1_4Bytes(0); } }
private void encodeDenseDimensions(GrowableByteBuffer buffer, MixedTensor tensor) { List<TensorType.Dimension> denseDimensions = tensor.type().dimensions().stream().filter(d -> d.isIndexed()).collect(Collectors.toList()); buffer.putInt1_4Bytes(denseDimensions.size()); for (TensorType.Dimension dimension : denseDimensions) { buffer.putUtf8String(dimension.name()); buffer.putInt1_4Bytes((int)dimension.size().orElseThrow(() -> new IllegalArgumentException("Unknown size of indexed dimension.")).longValue()); // XXX: Size truncation } }
@Override public void write(FieldBase field, TensorFieldValue value) { if (value.getTensor().isPresent()) { byte[] encodedTensor = TypedBinaryFormat.encode(value.getTensor().get()); buf.putInt1_4Bytes(encodedTensor.length); buf.put(encodedTensor); } else { buf.putInt1_4Bytes(0); } }
private void encodeCells(GrowableByteBuffer buffer, Tensor tensor) { buffer.putInt1_4Bytes((int)tensor.size()); // XXX: Size truncation for (Iterator<Tensor.Cell> i = tensor.cellIterator(); i.hasNext(); ) { Map.Entry<TensorAddress, Double> cell = i.next(); encodeAddress(buffer, cell.getKey()); buffer.putDouble(cell.getValue()); } }
/** Writes this string to the buffer as a 1_4 encoded length in bytes followed by the utf8 bytes */ public void putUtf8String(String value) { byte[] stringBytes = Utf8.toBytes(value); putInt1_4Bytes(stringBytes.length); put(stringBytes); }
private void encodeSparseDimensions(GrowableByteBuffer buffer, MixedTensor tensor) { List<TensorType.Dimension> sparseDimensions = tensor.type().dimensions().stream().filter(d -> !d.isIndexed()).collect(Collectors.toList()); buffer.putInt1_4Bytes(sparseDimensions.size()); for (TensorType.Dimension dimension : sparseDimensions) { buffer.putUtf8String(dimension.name()); } }
private void encodeDimensions(GrowableByteBuffer buffer, IndexedTensor tensor) { buffer.putInt1_4Bytes(tensor.type().dimensions().size()); for (int i = 0; i < tensor.type().dimensions().size(); i++) { buffer.putUtf8String(tensor.type().dimensions().get(i).name()); buffer.putInt1_4Bytes((int)tensor.dimensionSizes().size(i)); // XXX: Size truncation } }
public static byte[] encode(Tensor tensor) { GrowableByteBuffer buffer = new GrowableByteBuffer(); if (tensor instanceof MixedTensor) { buffer.putInt1_4Bytes(MIXED_BINARY_FORMAT_TYPE); new MixedBinaryFormat().encode(buffer, tensor); } else if (tensor instanceof IndexedTensor) { buffer.putInt1_4Bytes(DENSE_BINARY_FORMAT_TYPE); new DenseBinaryFormat().encode(buffer, tensor); } else { buffer.putInt1_4Bytes(SPARSE_BINARY_FORMAT_TYPE); new SparseBinaryFormat().encode(buffer, tensor); } buffer.flip(); byte[] result = new byte[buffer.remaining()]; buffer.get(result); return result; }
private void encodeCells(GrowableByteBuffer buffer, MixedTensor tensor) { List<TensorType.Dimension> sparseDimensions = tensor.type().dimensions().stream().filter(d -> !d.isIndexed()).collect(Collectors.toList()); long denseSubspaceSize = tensor.denseSubspaceSize(); if (sparseDimensions.size() > 0) { buffer.putInt1_4Bytes((int)(tensor.size() / denseSubspaceSize)); // XXX: Size truncation } Iterator<Tensor.Cell> cellIterator = tensor.cellIterator(); while (cellIterator.hasNext()) { Tensor.Cell cell = cellIterator.next(); for (TensorType.Dimension dimension : sparseDimensions) { int index = tensor.type().indexOfDimension(dimension.name()).orElseThrow(() -> new IllegalStateException("Dimension not found in address.")); buffer.putUtf8String(cell.getKey().label(index)); } buffer.putDouble(cell.getValue()); for (int i = 1; i < denseSubspaceSize; ++i ) { buffer.putDouble(cellIterator.next().getValue()); } } }
buf.putInt1_4Bytes(stringBytes.length + 1);
buf.putInt1_4Bytes(stringBytes.length + 1);
buf.putInt1_4Bytes(s.getFieldCount());
buf.putInt1_4Bytes(s.getFieldCount());