use of com.simiacryptus.mindseye.layers.java.ImgReshapeLayer in project MindsEye by SimiaCryptus.
the class EncodingUtil method downExplodeTensors.
/**
* Down explode tensors stream.
*
* @param stream the stream
* @param factor the factor
* @return the stream
*/
@Nonnull
public static Stream<Tensor[]> downExplodeTensors(@Nonnull final Stream<Tensor[]> stream, final int factor) {
if (0 >= factor)
throw new IllegalArgumentException();
if (-1 == factor)
throw new IllegalArgumentException();
return 1 == factor ? stream : stream.flatMap(tensor -> IntStream.range(0, factor * factor).mapToObj(subband -> {
@Nonnull final int[] select = new int[tensor[1].getDimensions()[2]];
final int offset = subband * select.length;
for (int i = 0; i < select.length; i++) {
select[i] = offset + i;
}
@Nonnull final PipelineNetwork network = new PipelineNetwork();
network.add(new ImgReshapeLayer(factor, factor, false));
network.add(new ImgBandSelectLayer(select));
@Nullable final Tensor result = network.eval(tensor[1]).getData().get(0);
return new Tensor[] { tensor[0], result };
}));
}
use of com.simiacryptus.mindseye.layers.java.ImgReshapeLayer in project MindsEye by SimiaCryptus.
the class VGG16_HDF5 method phase2b.
/**
* Phase 2 b.
*/
protected void phase2b() {
if (large) {
add(new ImgModulusPaddingLayer(7, 7));
} else {
add(new ImgModulusPaddingLayer(-7, -7));
}
if (dense) {
add(new ConvolutionLayer(7, 7, 512, 4096).setStrideXY(1, 1).setPaddingXY(0, 0).setAndFree(hdf5.readDataSet("param_0", "layer_32").reshapeCast(7, 7, 512, 4096).permuteDimensionsAndFree(0, 1, 3, 2)));
} else {
add(new ImgModulusPaddingLayer(7, 7));
add(new ImgReshapeLayer(7, 7, false));
add(new ConvolutionLayer(1, 1, 25088, 4096).setPaddingXY(0, 0).setAndFree(hdf5.readDataSet("param_0", "layer_32").permuteDimensionsAndFree(fullyconnectedOrder)));
}
add(new ImgBandBiasLayer(4096).setAndFree((hdf5.readDataSet("param_1", "layer_32"))));
add(new ActivationLayer(ActivationLayer.Mode.RELU));
}
use of com.simiacryptus.mindseye.layers.java.ImgReshapeLayer in project MindsEye by SimiaCryptus.
the class VGG19_HDF5 method phase2b.
/**
* Phase 2 b.
*/
protected void phase2b() {
if (large) {
add(new ImgModulusPaddingLayer(7, 7));
} else {
add(new ImgModulusPaddingLayer(-7, -7));
}
if (dense) {
add(new ConvolutionLayer(7, 7, 512, 4096).setStrideXY(1, 1).setPaddingXY(0, 0).setAndFree(hdf5.readDataSet("param_0", "layer_38").reshapeCast(7, 7, 512, 4096).permuteDimensionsAndFree(0, 1, 3, 2)));
} else {
add(new ImgModulusPaddingLayer(7, 7));
add(new ImgReshapeLayer(7, 7, false));
add(new ConvolutionLayer(1, 1, 25088, 4096).setPaddingXY(0, 0).setAndFree(hdf5.readDataSet("param_0", "layer_38").permuteDimensionsAndFree(fullyconnectedOrder)));
}
add(new ImgBandBiasLayer(4096).setAndFree((hdf5.readDataSet("param_1", "layer_38"))));
add(new ActivationLayer(ActivationLayer.Mode.RELU));
}
Aggregations