use of com.alibaba.alink.common.linalg.tensor.DoubleTensor in project Alink by alibaba.
the class TFTensorConversionUtilsTest method testFromTFTensor.
@Test
public void testFromTFTensor() {
Tensor<TFloat64> tensor = TFloat64.tensorOf(StdArrays.ndCopyOf(new double[][] { { 1., 2. }, { 3., 4. } }));
DoubleTensor doubleTensor = (DoubleTensor) TFTensorConversionUtils.fromTFTensor(tensor);
Assert.assertEquals(DataType.DOUBLE, doubleTensor.getType());
Assert.assertArrayEquals(new long[] { 2, 2 }, doubleTensor.shape());
double[] arr = new double[4];
DoubleDataBuffer buffer = DataBuffers.of(arr, false, false);
TensorInternalUtils.getTensorData(doubleTensor).read(buffer);
Assert.assertArrayEquals(new double[] { 1., 2., 3., 4. }, arr, 1e-9);
}
use of com.alibaba.alink.common.linalg.tensor.DoubleTensor in project Alink by alibaba.
the class KerasSequentialClassifierBatchOpTest method testInputWithTensorType.
@Category(DLTest.class)
@Test
public void testInputWithTensorType() throws Exception {
Random random = new Random();
int n = 1000;
int nTimesteps = 200;
int nvars = 3;
List<Row> rows = new ArrayList<>();
for (int k = 0; k < n; k += 1) {
double[][] xArr = new double[nTimesteps][nvars];
for (int i = 0; i < nTimesteps; i += 1) {
for (int j = 0; j < nvars; j += 1) {
xArr[i][j] = random.nextFloat();
}
}
DoubleTensor x = new DoubleTensor(xArr);
int label = random.nextInt(2);
rows.add(Row.of(x, label));
}
BatchOperator<?> source = new MemSourceBatchOp(rows, "tensor DOUBLE_TENSOR, label int");
KerasSequentialClassifierTrainBatchOp trainBatchOp = new KerasSequentialClassifierTrainBatchOp().setTensorCol("tensor").setLabelCol("label").setLayers(new String[] { "Conv1D(256, 5, padding='same', activation='relu')", "Conv1D(128, 5, padding='same', activation='relu')", "Dropout(0.1)", "MaxPooling1D(pool_size=8)", "Conv1D(128, 5, padding='same', activation='relu')", "Conv1D(128, 5, padding='same', activation='relu')", "Flatten()" }).setOptimizer("Adam()").setNumEpochs(1).linkFrom(source);
KerasSequentialClassifierPredictBatchOp predictBatchOp = new KerasSequentialClassifierPredictBatchOp().setPredictionCol("pred").setPredictionDetailCol("pred_detail").setReservedCols("label").linkFrom(trainBatchOp, source);
predictBatchOp.lazyPrint(10);
BatchOperator.execute();
}
use of com.alibaba.alink.common.linalg.tensor.DoubleTensor in project Alink by alibaba.
the class VectorToTensorMapperTest method testFloatType.
@Test
public void testFloatType() throws Exception {
final Mapper mapper = new VectorToTensorMapper(new TableSchema(new String[] { "vec" }, new TypeInformation<?>[] { VectorTypes.DENSE_VECTOR }), new Params().set(VectorToTensorParams.SELECTED_COL, "vec").set(VectorToTensorParams.TENSOR_SHAPE, new Long[] { 2L, 3L }).set(VectorToTensorParams.TENSOR_DATA_TYPE, DataType.FLOAT));
Assert.assertEquals(TensorTypes.FLOAT_TENSOR, mapper.getOutputSchema().getFieldTypes()[0]);
final DoubleTensor tensor = DoubleTensor.of(TensorUtil.getTensor("FLOAT#6#0.0 0.1 1.0 1.1 2.0 2.1 "));
final FloatTensor expect = FloatTensor.of(tensor.reshape(new Shape(2L, 3L)));
final Tensor<?> result = (Tensor<?>) mapper.map(Row.of(tensor.toVector())).getField(0);
Assert.assertEquals(expect, result);
}
use of com.alibaba.alink.common.linalg.tensor.DoubleTensor in project Alink by alibaba.
the class VectorToTensorMapperTest method testReshape.
@Test
public void testReshape() throws Exception {
final Mapper mapper = new VectorToTensorMapper(new TableSchema(new String[] { "vec" }, new TypeInformation<?>[] { VectorTypes.DENSE_VECTOR }), new Params().set(VectorToTensorParams.SELECTED_COL, "vec").set(VectorToTensorParams.TENSOR_SHAPE, new Long[] { 2L, 3L }));
final DoubleTensor tensor = DoubleTensor.of(TensorUtil.getTensor("FLOAT#6#0.0 0.1 1.0 1.1 2.0 2.1 "));
final DoubleTensor expect = tensor.reshape(new Shape(2L, 3L));
final Tensor<?> result = (Tensor<?>) mapper.map(Row.of(tensor.toVector())).getField(0);
Assert.assertEquals(expect, result);
}
use of com.alibaba.alink.common.linalg.tensor.DoubleTensor in project Alink by alibaba.
the class VectorToTensorMapperTest method testOp.
@Test
public void testOp() throws Exception {
final DoubleTensor tensor = DoubleTensor.of(TensorUtil.getTensor("FLOAT#6#0.0 0.1 1.0 1.1 2.0 2.1 "));
final FloatTensor expect = FloatTensor.of(tensor.reshape(new Shape(2L, 3L)));
Row[] rows = new Row[] { Row.of(tensor.toVector()) };
MemSourceBatchOp memSourceBatchOp = new MemSourceBatchOp(rows, new String[] { "vec" });
memSourceBatchOp.link(new VectorToTensorBatchOp().setSelectedCol("vec").setTensorShape(2, 3).setTensorDataType("float")).lazyCollect(new Consumer<List<Row>>() {
@Override
public void accept(List<Row> rows) {
Assert.assertEquals(expect, TensorUtil.getTensor(rows.get(0).getField(0)));
}
});
BatchOperator.execute();
}
Aggregations