WithShapeOrScalarOrVectorTensor.java
package neureka.fluent.building.states;
import neureka.Tensor;
import neureka.common.utility.LogUtil;
import java.util.ArrayList;
import java.util.List;
public interface WithShapeOrScalarOrVectorTensor<V> extends WithShapeOrScalarOrVector<V>
{
/** {@inheritDoc} */
@Override
IterByOrIterFromOrAllTensor<V> withShape(int... shape );
/** {@inheritDoc} */
@Override default <N extends Number> IterByOrIterFromOrAllTensor<V> withShape(List<N> shape ) {
LogUtil.nullArgCheck(shape, "shape", List.class, "Cannot create a tensor without shape!");
return this.withShape(
shape.stream().mapToInt(Number::intValue).toArray()
);
}
/** {@inheritDoc} */
@Override
Tensor<V> vector(V... values );
/** {@inheritDoc} */
@Override default Tensor<V> vector(List<V> values ) {
return vector( values.toArray( (V[]) new Object[values.size()] ) );
}
/** {@inheritDoc} */
@Override default Tensor<V> vector(Iterable<V> values ) {
List<V> list = new ArrayList<>();
values.forEach( list::add );
return vector( list );
}
/** {@inheritDoc} */
@Override
Tensor<V> scalar(V value );
}