public DoubleUnaryOpLambda(Vertex<IN> inputVertex, Function<IN, DoubleTensor> op, Function<Map<Vertex, PartialDerivative>, PartialDerivative> forwardModeAutoDiffLambda, Function<PartialDerivative, Map<Vertex, PartialDerivative>> reverseModeAutoDiffLambda) { this(inputVertex.getShape(), inputVertex, op, forwardModeAutoDiffLambda, reverseModeAutoDiffLambda); }
public int getRank() { return getShape().length; }
public IntegerUnaryOpLambda(Vertex<IN> inputVertex, Function<IN, IntegerTensor> op) { this(inputVertex.getShape(), inputVertex, op); }
public BooleanUnaryOpVertex(Vertex<T> a) { this(a.getShape(), a); }
public DoubleBinaryOpLambda(Vertex<A> left, Vertex<B> right, BiFunction<A, B, DoubleTensor> op, Function<Map<Vertex, PartialDerivative>, PartialDerivative> forwardModeAutoDiffLambda, Function<PartialDerivative, Map<Vertex, PartialDerivative>> reverseModeAutoDiffLambda) { this(checkHasOneNonLengthOneShapeOrAllLengthOne(left.getShape(), right.getShape()), left, right, op, forwardModeAutoDiffLambda, reverseModeAutoDiffLambda); }
default PartialDerivative forwardModeAutoDifferentiation(Map<Vertex, PartialDerivative> derivativeOfParentsWithRespectToInput) { if (((Vertex) this).isObserved()) { return PartialDerivative.EMPTY; } else { return withRespectToSelf(((Vertex) this).getShape()); } }
@ExportVertexToPythonBindings public NotVertex(@LoadVertexParam(INPUT_NAME) Vertex<BooleanTensor> a) { super(a.getShape(), a); }
@ExportVertexToPythonBindings public CastToDoubleVertex(@LoadVertexParam(INPUT_VERTEX_NAME) Vertex<? extends NumberTensor> inputVertex) { super(inputVertex.getShape()); this.inputVertex = inputVertex; setParents(inputVertex); }
/** * A vertex that extracts a scalar at a given index * * @param inputVertex the input vertex * @param index the index of extraction */ public GenericTakeVertex(@LoadVertexParam(INPUT_NAME) Vertex<Tensor<T>> inputVertex, @LoadVertexParam(INDEX_NAME) long... index) { super(Tensor.SCALAR_SHAPE, inputVertex); TensorShapeValidation.checkIndexIsValid(inputVertex.getShape(), index); this.index = index; }
@ExportVertexToPythonBindings public CastToBooleanVertex(@LoadVertexParam(INPUT_NAME) Vertex<? extends BooleanTensor> inputVertex) { super(inputVertex.getShape()); this.inputVertex = inputVertex; setParents(inputVertex); }
public IfVertex(@LoadVertexParam(PREDICATE_NAME) BooleanVertex predicate, @LoadVertexParam(THEN_NAME) Vertex<? extends Tensor<T>> thn, @LoadVertexParam(ELSE_NAME) Vertex<? extends Tensor<T>> els) { super(TensorShapeValidation.checkTernaryConditionShapeIsValid(predicate.getShape(), thn.getShape(), els.getShape())); this.predicate = predicate; this.thn = thn; this.els = els; setParents(predicate, thn, els); }
public static PartialsOf reverseModeAutoDiff(Vertex ofVertex, Set<DoubleVertex> wrt) { if (ofVertex.isObserved()) { return new PartialsOf(ofVertex, Collections.emptyMap()); } else { return reverseModeAutoDiff(ofVertex, Differentiable.withRespectToSelf(ofVertex.getShape()), wrt); } }
@ExportVertexToPythonBindings public CastToIntegerVertex(@LoadVertexParam(INPUT_NAME) Vertex<? extends NumberTensor> inputVertex) { super(inputVertex.getShape()); this.inputVertex = inputVertex; setParents(inputVertex); }
@ExportVertexToPythonBindings public PrintVertex(@LoadVertexParam(PARENT) Vertex<T> parent, @LoadVertexParam(MESSAGE) final String message, @LoadVertexParam(PRINT_DATA) boolean printData) { super(parent.getShape()); this.parent = parent; this.message = Preconditions.checkNotNull(message); this.printData = printData; setParents(parent); }
/** * A vertex that extracts a scalar at a given index * * @param inputVertex the input vertex to extract from * @param index the index to extract at */ @ExportVertexToPythonBindings public BooleanTakeVertex(@LoadVertexParam(INPUT_NAME) Vertex<BooleanTensor> inputVertex, @LoadVertexParam(INDEX_NAME) long... index) { super(Tensor.SCALAR_SHAPE, inputVertex); this.index = index; TensorShapeValidation.checkIndexIsValid(inputVertex.getShape(), index); }
@ExportVertexToPythonBindings public NumericalEqualsVertex(@LoadVertexParam(A_NAME) Vertex<? extends NumberTensor> a, @LoadVertexParam(B_NAME) Vertex<? extends NumberTensor> b, @LoadVertexParam(EPISILON_NAME) Vertex<? extends NumberTensor> epsilon) { super(a.getShape()); this.a = a; this.b = b; this.epsilon = epsilon; setParents(a, b, epsilon); }
private KeanuSavedBayesNet.Vertex buildVertex(Vertex vertex) { KeanuSavedBayesNet.Vertex.Builder vertexBuilder = KeanuSavedBayesNet.Vertex.newBuilder(); if (vertex.getLabel() != null) { vertexBuilder = vertexBuilder.setLabel(vertex.getLabel().toString()); } vertexBuilder = vertexBuilder.setId(KeanuSavedBayesNet.VertexID.newBuilder().setId(vertex.getId().toString())); vertexBuilder = vertexBuilder.setVertexType(vertex.getClass().getCanonicalName()); vertexBuilder = vertexBuilder.addAllShape(Longs.asList(vertex.getShape())); saveParams(vertexBuilder, vertex); return vertexBuilder.build(); }
private KeanuSavedBayesNet.StoredValue getValue(Vertex vertex, String formattedValue) { KeanuSavedBayesNet.GenericTensor savedValue = KeanuSavedBayesNet.GenericTensor.newBuilder() .addAllShape(Longs.asList(vertex.getShape())) .addValues(formattedValue) .build(); KeanuSavedBayesNet.VertexValue value = KeanuSavedBayesNet.VertexValue.newBuilder() .setGenericVal(savedValue) .build(); return getStoredValue(vertex, value); }