use of com.simiacryptus.mindseye.layers.cudnn.ImgBandBiasLayer in project MindsEye by SimiaCryptus.
the class ArtistryUtil method squareAvg.
/**
* Square avg pipeline network.
*
* @param network the network
* @param mean the mean
* @param pcaTransform the pca transform
* @return the pipeline network
*/
@Nonnull
public static PipelineNetwork squareAvg(final PipelineNetwork network, Tensor mean, Tensor pcaTransform) {
int[] dimensions = pcaTransform.getDimensions();
int inputBands = mean.getDimensions()[2];
int pcaBands = dimensions[2];
int outputBands = pcaBands / inputBands;
int width = dimensions[0];
int height = dimensions[1];
network.wrap(new ImgBandBiasLayer(mean.scale(-1)));
network.wrap(new ConvolutionLayer(width, height, inputBands, outputBands).set(pcaTransform));
network.wrap(new SquareActivationLayer());
network.wrap(new BandAvgReducerLayer());
return network;
}
use of com.simiacryptus.mindseye.layers.cudnn.ImgBandBiasLayer in project MindsEye by SimiaCryptus.
the class VGG16_HDF5 method addConvolutionLayer.
/**
* Add convolution layer.
*
* @param radius the radius
* @param inputBands the input bands
* @param outputBands the output bands
* @param activationMode the activation mode
* @param hdf_group the hdf group
*/
protected void addConvolutionLayer(final int radius, final int inputBands, final int outputBands, final ActivationLayer.Mode activationMode, final String hdf_group) {
add(new ConvolutionLayer(radius, radius, inputBands, outputBands).setPaddingXY(0, 0).setAndFree(hdf5.readDataSet("param_0", hdf_group).permuteDimensionsAndFree(convolutionOrder)));
add(new ImgBandBiasLayer(outputBands).setAndFree((hdf5.readDataSet("param_1", hdf_group))));
add(new ActivationLayer(activationMode));
}
use of com.simiacryptus.mindseye.layers.cudnn.ImgBandBiasLayer 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.cudnn.ImgBandBiasLayer 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));
}
use of com.simiacryptus.mindseye.layers.cudnn.ImgBandBiasLayer in project MindsEye by SimiaCryptus.
the class VGG19_HDF5 method addConvolutionLayer.
/**
* Add convolution layer.
*
* @param radius the radius
* @param inputBands the input bands
* @param outputBands the output bands
* @param activationMode the activation mode
* @param hdf_group the hdf group
*/
protected void addConvolutionLayer(final int radius, final int inputBands, final int outputBands, final ActivationLayer.Mode activationMode, final String hdf_group) {
add(new ConvolutionLayer(radius, radius, inputBands, outputBands).setPaddingXY(0, 0).setAndFree(hdf5.readDataSet("param_0", hdf_group).permuteDimensionsAndFree(convolutionOrder)));
add(new ImgBandBiasLayer(outputBands).setAndFree((hdf5.readDataSet("param_1", hdf_group))));
add(new ActivationLayer(activationMode));
}
Aggregations