use of com.yahoo.tensor.evaluation.VariableTensor in project vespa by vespa-engine.
the class TensorFlowOperation method function.
/**
* Returns the Vespa tensor function implementing all operations from this node with inputs
*/
public Optional<TensorFunction> function() {
if (function == null) {
if (isConstant()) {
ExpressionNode constant = new ReferenceNode(Reference.simple("constant", vespaName()));
function = new TensorFunctionNode.TensorFunctionExpressionNode(constant);
} else if (outputs.size() > 1) {
macro = lazyGetFunction();
function = new VariableTensor(macroName(), type.type());
} else {
function = lazyGetFunction();
}
}
return Optional.ofNullable(function);
}
use of com.yahoo.tensor.evaluation.VariableTensor in project vespa by vespa-engine.
the class Placeholder method lazyGetFunction.
@Override
protected TensorFunction lazyGetFunction() {
TensorFunction output = new VariableTensor(vespaName(), standardNamingType.type());
if (!standardNamingType.equals(type)) {
List<String> renameFrom = standardNamingType.dimensionNames();
List<String> renameTo = type.dimensionNames();
output = new Rename(output, renameFrom, renameTo);
}
return output;
}
use of com.yahoo.tensor.evaluation.VariableTensor in project vespa by vespa-engine.
the class TensorFunctionBenchmark method dotProduct.
private double dotProduct(Tensor tensor, List<Tensor> tensors) {
double largest = Double.MIN_VALUE;
TensorFunction dotProductFunction = new Reduce(new Join(new ConstantTensor(tensor), new VariableTensor("argument"), (a, b) -> a * b), Reduce.Aggregator.sum).toPrimitive();
MapEvaluationContext context = new MapEvaluationContext();
for (Tensor tensorElement : tensors) {
// tensors.size() = 1 for larger tensor
context.put("argument", tensorElement);
double dotProduct = dotProductFunction.evaluate(context).asDouble();
if (dotProduct > largest) {
largest = dotProduct;
}
}
return largest;
}
use of com.yahoo.tensor.evaluation.VariableTensor in project vespa by vespa-engine.
the class TensorTestCase method dotProduct.
private double dotProduct(Tensor tensor, List<Tensor> tensors) {
double sum = 0;
TensorFunction dotProductFunction = new Reduce(new Join(new ConstantTensor(tensor), new VariableTensor("argument"), (a, b) -> a * b), Reduce.Aggregator.sum).toPrimitive();
MapEvaluationContext context = new MapEvaluationContext();
for (Tensor tensorElement : tensors) {
// tensors.size() = 1 for larger tensor
context.put("argument", tensorElement);
// System.out.println("Dot product of " + tensor + " and " + tensorElement + ": " + dotProductFunction.evaluate(context).asDouble());
sum += dotProductFunction.evaluate(context).asDouble();
}
return sum;
}
Aggregations