use of com.simiacryptus.util.TableOutput in project MindsEye by SimiaCryptus.
the class EncodingUtil method validationReport.
/**
* Validation report.
*
* @param log the log
* @param data the data
* @param dataPipeline the data pipeline
* @param maxRows the max rows
*/
public static void validationReport(@Nonnull final NotebookOutput log, @Nonnull final Tensor[][] data, @Nonnull final List<Layer> dataPipeline, final int maxRows) {
log.out("Current dataset and evaluation results: ");
log.code(() -> {
@Nonnull final TableOutput table = new TableOutput();
Arrays.stream(data).limit(maxRows).map(tensorArray -> {
@Nonnull final LinkedHashMap<CharSequence, Object> row = new LinkedHashMap<>();
for (int col = 1; col < tensorArray.length; col++) {
EncodingUtil.renderLayer(log, dataPipeline, row, col, tensorArray[col]);
}
return row;
}).filter(x -> null != x).limit(10).forEach(table::putRow);
return table;
});
}
use of com.simiacryptus.util.TableOutput in project MindsEye by SimiaCryptus.
the class ImageClassifierTestBase method run.
/**
* Test.
*
* @param log the log
*/
public void run(@Nonnull NotebookOutput log) {
Future<Tensor[][]> submit = Executors.newSingleThreadExecutor().submit(() -> Arrays.stream(EncodingUtil.getImages(log, img -> {
return img;
// return TestUtil.resize(img, 224, 224);
// if(img.getWidth()>img.getHeight()) {
// return TestUtil.resize(img, 224, img.getHeight() * 224 / img.getWidth());
// } else {
// return TestUtil.resize(img, img.getWidth() * 224 / img.getHeight(), 224);
// }
}, 10, new CharSequence[] {})).toArray(i -> new Tensor[i][]));
ImageClassifier vgg16 = getImageClassifier(log);
@Nonnull Layer network = vgg16.getNetwork();
log.h1("Network Diagram");
log.p("This is a diagram of the imported network:");
log.code(() -> {
return Graphviz.fromGraph(TestUtil.toGraph((DAGNetwork) network)).height(4000).width(800).render(Format.PNG).toImage();
});
// @javax.annotation.Nonnull SerializationTest serializationTest = new SerializationTest();
// serializationTest.setPersist(true);
// serializationTest.test(log, network, (Tensor[]) null);
log.h1("Predictions");
Tensor[][] images;
try {
images = submit.get();
} catch (Exception e) {
throw new RuntimeException(e);
}
@Nonnull Map<CharSequence, List<LinkedHashMap<CharSequence, Double>>> modelPredictions = new HashMap<>();
modelPredictions.put("Source", predict(log, vgg16, network, images));
network.freeRef();
// serializationTest.getModels().forEach((precision, model) -> {
// log.h2(precision.name());
// modelPredictions.put(precision.name(), predict(log, vgg16, model, images));
// });
log.h1("Result");
log.code(() -> {
@Nonnull TableOutput tableOutput = new TableOutput();
for (int i = 0; i < images.length; i++) {
int index = i;
@Nonnull HashMap<CharSequence, Object> row = new HashMap<>();
row.put("Image", log.image(images[i][1].toImage(), ""));
modelPredictions.forEach((model, predictions) -> {
row.put(model, predictions.get(index).entrySet().stream().map(e -> String.format("%s -> %.2f", e.getKey(), 100 * e.getValue())).reduce((a, b) -> a + "<br/>" + b).get());
});
tableOutput.putRow(row);
}
return tableOutput;
}, 256 * 1024);
// log.p("CudaSystem Statistics:");
// log.code(() -> {
// return TestUtil.toFormattedJson(CudaSystem.getExecutionStatistics());
// });
}
Aggregations