package com.m4rkl1u.autoencoder;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.DataBufferInt;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import javax.imageio.ImageIO;
import org.encog.engine.network.activation.ActivationTANH;
public class Benchmark {
public static void main(String[] args) throws IOException {
//StdDraw.picture(0.5, 0.5, "src/resources/lena.jpg");
AutoEncoder encoder = new AutoEncoder();
File resource = new File("src/resources");
if(resource.exists() && resource.isDirectory()) {
for(File f : resource.listFiles()) {
BufferedImage img = ImageIO.read(f);
int scaleX = 50;
int scaleY = 50;
Image image = img.getScaledInstance(scaleX, scaleY, Image.SCALE_DEFAULT);
BufferedImage buffered = new BufferedImage(scaleX, scaleY, BufferedImage.TYPE_INT_ARGB);
buffered.getGraphics().drawImage(image, 0, 0 , null);
int[] pixels = ((DataBufferInt) buffered.getRaster().getDataBuffer()).getData();
double[] input = new double[pixels.length];
for(int i = 0 ; i < pixels.length; i ++) {
input[i] = ((double)pixels[i]) / (256 * 256 * 256);
assert(input[i] >= -1. && input[i] <= 1.);
}
System.out.println("reading file: " + f.getName() + " with size: " + input.length);
encoder.addData(input);
}
}
encoder.addLayer(new ActivationTANH(), 1600);
encoder.addLayer(new ActivationTANH(), 900);
double[] fpixels = encoder.represent(2);
System.out.println(fpixels[2]);
}
}