19 |
20 |
21 |
Spring Boot Deeplearning4J integration example
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
Upload your input as CSV for customer rentention prediction
32 |
40 |
41 |
42 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/03_Building_Deep_Neural_Networks_for_Binary_classification/sourceCode/spring-dl4j/src/test/java/com/springdl4j/springdl4j/SpringDl4jApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.springdl4j.springdl4j;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.junit4.SpringRunner;
7 |
8 | @RunWith(SpringRunner.class)
9 | @SpringBootTest
10 | public class SpringDl4jApplicationTests {
11 |
12 | @Test
13 | public void contextLoads() {
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/README.md:
--------------------------------------------------------------------------------
1 |
2 | ### Chapter 4 : Building Convolutional Neural Networks
3 |
4 | In this chapter, you will be creating a convolutional neural network to perform basic imagenet classification.
5 |
6 |
7 |
8 |
9 |
10 | #### Instructions
11 | Navigate to **sourceCode** directory and you will see two directories:
12 |
13 | - cookbookapp
14 | - spring-dl4j
15 |
16 |
17 |
18 | For complete implementation on customer churn prediction, import the maven project: **cookbookapp**. For DL4J Spring integration example, import the maven project:
19 | **spring-dl4j**
20 |
21 |
22 |
23 |
24 | You may use the dataset (*dataset.zip*) included in this directory or use on your own by following the instructions in cookbook.
25 |
26 |
27 |
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/dataset.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahul-raj/Java-Deep-Learning-Cookbook/ba8dbb3a174cfe7e02a46ef5f222cb22254df199/04_Building_Convolutional_Neural_Networks/dataset.zip
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/cookbookapp/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | target
3 | cookbook-app.iml
4 | cookbook-app.iws
5 | cookbook-app.ipr
6 | cookbookapp.iml
7 | cookbookapp-cnn.iml
8 | dependency-reduced-pom.xml
9 | model.zip
10 | LocalExecuteExample.csv
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/cookbookapp/cnntrainedmodel.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahul-raj/Java-Deep-Learning-Cookbook/ba8dbb3a174cfe7e02a46ef5f222cb22254df199/04_Building_Convolutional_Neural_Networks/sourceCode/cookbookapp/cnntrainedmodel.zip
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/cookbookapp/src/main/java/com/javadeeplearningcookbook/api/ImageClassifierAPI.java:
--------------------------------------------------------------------------------
1 | package com.javadeeplearningcookbook.api;
2 |
3 | import org.datavec.api.records.reader.RecordReader;
4 | import org.datavec.api.split.FileSplit;
5 | import org.datavec.api.split.InputSplit;
6 | import org.datavec.image.recordreader.ImageRecordReader;
7 | import org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator;
8 | import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
9 | import org.deeplearning4j.util.ModelSerializer;
10 | import org.nd4j.linalg.api.ndarray.INDArray;
11 | import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
12 | import org.nd4j.linalg.dataset.api.preprocessor.ImagePreProcessingScaler;
13 | import org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize;
14 | import org.nd4j.linalg.io.ClassPathResource;
15 |
16 | import java.io.File;
17 | import java.io.IOException;
18 |
19 | public class ImageClassifierAPI {
20 | public static INDArray generateOutput(File inputFile, String modelFileLocation) throws IOException, InterruptedException {
21 | //retrieve the saved model
22 | final File modelFile = new File(modelFileLocation);
23 | final MultiLayerNetwork model = ModelSerializer.restoreMultiLayerNetwork(modelFile);
24 | final RecordReader imageRecordReader = generateReader(inputFile);
25 | final ImagePreProcessingScaler normalizerStandardize = ModelSerializer.restoreNormalizerFromFile(modelFile);
26 | final DataSetIterator dataSetIterator = new RecordReaderDataSetIterator.Builder(imageRecordReader,1).build();
27 | normalizerStandardize.fit(dataSetIterator);
28 | dataSetIterator.setPreProcessor(normalizerStandardize);
29 | return model.output(dataSetIterator);
30 | }
31 |
32 | private static RecordReader generateReader(File file) throws IOException, InterruptedException {
33 | final RecordReader recordReader = new ImageRecordReader(30,30,3);
34 | final InputSplit inputSplit = new FileSplit(file);
35 | recordReader.initialize(inputSplit);
36 | return recordReader;
37 | }
38 |
39 | public static void main(String[] args) throws IOException, InterruptedException {
40 | final File file = new File("D:\\dataset\\Beagle\\beagle_7.jpg");
41 | final INDArray results = generateOutput(file,"cnntrainedmodel.zip");
42 | System.out.println(results);
43 | }
44 | }
45 |
46 |
47 |
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/cookbookapp/src/main/resources/cnntrainedmodel.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahul-raj/Java-Deep-Learning-Cookbook/ba8dbb3a174cfe7e02a46ef5f222cb22254df199/04_Building_Convolutional_Neural_Networks/sourceCode/cookbookapp/src/main/resources/cnntrainedmodel.zip
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | /target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 |
5 | ### STS ###
6 | .apt_generated
7 | .classpath
8 | .factorypath
9 | .project
10 | .settings
11 | .springBeans
12 | .sts4-cache
13 |
14 | ### IntelliJ IDEA ###
15 | .idea
16 | *.iws
17 | *.iml
18 | *.ipr
19 |
20 | ### NetBeans ###
21 | /nbproject/private/
22 | /nbbuild/
23 | /dist/
24 | /nbdist/
25 | /.nb-gradle/
26 | /build/
27 |
28 | ### VS Code ###
29 | .vscode/
30 |
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/.mvn/wrapper/MavenWrapperDownloader.java:
--------------------------------------------------------------------------------
1 | /*
2 | Licensed to the Apache Software Foundation (ASF) under one
3 | or more contributor license agreements. See the NOTICE file
4 | distributed with this work for additional information
5 | regarding copyright ownership. The ASF licenses this file
6 | to you under the Apache License, Version 2.0 (the
7 | "License"); you may not use this file except in compliance
8 | with the License. You may obtain a copy of the License at
9 |
10 | https://www.apache.org/licenses/LICENSE-2.0
11 |
12 | Unless required by applicable law or agreed to in writing,
13 | software distributed under the License is distributed on an
14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 | KIND, either express or implied. See the License for the
16 | specific language governing permissions and limitations
17 | under the License.
18 | */
19 |
20 | import java.io.File;
21 | import java.io.FileInputStream;
22 | import java.io.FileOutputStream;
23 | import java.io.IOException;
24 | import java.net.URL;
25 | import java.nio.channels.Channels;
26 | import java.nio.channels.ReadableByteChannel;
27 | import java.util.Properties;
28 |
29 | public class MavenWrapperDownloader {
30 |
31 | /**
32 | * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
33 | */
34 | private static final String DEFAULT_DOWNLOAD_URL =
35 | "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";
36 |
37 | /**
38 | * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
39 | * use instead of the default one.
40 | */
41 | private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
42 | ".mvn/wrapper/maven-wrapper.properties";
43 |
44 | /**
45 | * Path where the maven-wrapper.jar will be saved to.
46 | */
47 | private static final String MAVEN_WRAPPER_JAR_PATH =
48 | ".mvn/wrapper/maven-wrapper.jar";
49 |
50 | /**
51 | * Name of the property which should be used to override the default download url for the wrapper.
52 | */
53 | private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
54 |
55 | public static void main(String args[]) {
56 | System.out.println("- Downloader started");
57 | File baseDirectory = new File(args[0]);
58 | System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
59 |
60 | // If the maven-wrapper.properties exists, read it and check if it contains a custom
61 | // wrapperUrl parameter.
62 | File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
63 | String url = DEFAULT_DOWNLOAD_URL;
64 | if(mavenWrapperPropertyFile.exists()) {
65 | FileInputStream mavenWrapperPropertyFileInputStream = null;
66 | try {
67 | mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
68 | Properties mavenWrapperProperties = new Properties();
69 | mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
70 | url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
71 | } catch (IOException e) {
72 | System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
73 | } finally {
74 | try {
75 | if(mavenWrapperPropertyFileInputStream != null) {
76 | mavenWrapperPropertyFileInputStream.close();
77 | }
78 | } catch (IOException e) {
79 | // Ignore ...
80 | }
81 | }
82 | }
83 | System.out.println("- Downloading from: : " + url);
84 |
85 | File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
86 | if(!outputFile.getParentFile().exists()) {
87 | if(!outputFile.getParentFile().mkdirs()) {
88 | System.out.println(
89 | "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
90 | }
91 | }
92 | System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
93 | try {
94 | downloadFileFromURL(url, outputFile);
95 | System.out.println("Done");
96 | System.exit(0);
97 | } catch (Throwable e) {
98 | System.out.println("- Error downloading");
99 | e.printStackTrace();
100 | System.exit(1);
101 | }
102 | }
103 |
104 | private static void downloadFileFromURL(String urlString, File destination) throws Exception {
105 | URL website = new URL(urlString);
106 | ReadableByteChannel rbc;
107 | rbc = Channels.newChannel(website.openStream());
108 | FileOutputStream fos = new FileOutputStream(destination);
109 | fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
110 | fos.close();
111 | rbc.close();
112 | }
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahul-raj/Java-Deep-Learning-Cookbook/ba8dbb3a174cfe7e02a46ef5f222cb22254df199/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
2 |
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/model.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahul-raj/Java-Deep-Learning-Cookbook/ba8dbb3a174cfe7e02a46ef5f222cb22254df199/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/model.zip
--------------------------------------------------------------------------------
/04_Building_Convolutional_Neural_Networks/sourceCode/spring-dl4j/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |