Skip to content

Commit 229d9fb

Browse files
authored
Merge pull request #7 from PacktPublishing/ch4-fix
chapter 4 source code fix
2 parents b2fa375 + 3604a42 commit 229d9fb

File tree

10 files changed

+37
-18
lines changed

10 files changed

+37
-18
lines changed

04_Building Convolutional Neural Networks/sourceCode/cookbookapp/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ cookbook-app.ipr
66
cookbookapp.iml
77
dependency-reduced-pom.xml
88
model.zip
9-
LocalExecuteExample.csv
9+
LocalExecuteExample.csv
10+
cookbookapp-cnn.iml
Binary file not shown.

04_Building Convolutional Neural Networks/sourceCode/cookbookapp/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<archive>
3838
<manifest>
3939
<mainClass>
40-
com.javadeeplearningcookbook.examples.CustomerRetentionPredictionExample
40+
com.javadeeplearningcookbook.examples.AnimalClassifier
4141
</mainClass>
4242
</manifest>
4343
</archive>
@@ -59,7 +59,7 @@
5959
implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
6060
<transformer
6161
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
62-
<mainClass>com.javadeeplearningcookbook.examples.CustomerRetentionPredictionExample</mainClass>
62+
<mainClass>com.javadeeplearningcookbook.examples.AnimalClassifier</mainClass>
6363
</transformer>
6464
</transformers>
6565
</configuration>
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,19 @@
99
import org.deeplearning4j.util.ModelSerializer;
1010
import org.nd4j.linalg.api.ndarray.INDArray;
1111
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
12+
import org.nd4j.linalg.dataset.api.preprocessor.ImagePreProcessingScaler;
1213
import org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize;
1314

1415
import java.io.File;
1516
import java.io.IOException;
1617

17-
public class AnimalClassifierAPI {
18+
public class ImageClassifierAPI {
1819
public static INDArray generateOutput(File file) throws IOException, InterruptedException {
19-
final File modelFile = new File("cnntrainedmodel.zip");
20+
//retrieve the saved model
21+
final File modelFile = new File("D:\\cnntrainedmodel.zip");
2022
final MultiLayerNetwork model = ModelSerializer.restoreMultiLayerNetwork(modelFile);
2123
final RecordReader imageRecordReader = generateReader(file);
22-
final NormalizerStandardize normalizerStandardize = ModelSerializer.restoreNormalizerFromFile(modelFile);
24+
final ImagePreProcessingScaler normalizerStandardize = ModelSerializer.restoreNormalizerFromFile(modelFile);
2325
final DataSetIterator dataSetIterator = new RecordReaderDataSetIterator.Builder(imageRecordReader,1).build();
2426
normalizerStandardize.fit(dataSetIterator);
2527
dataSetIterator.setPreProcessor(normalizerStandardize);
@@ -34,10 +36,10 @@ private static RecordReader generateReader(File file) throws IOException, Interr
3436
}
3537

3638
public static void main(String[] args) throws IOException, InterruptedException {
37-
final File file = new File("sample.png");
39+
final File file = new File("D:\\dataset\\Beagle\\beagle_7.jpg");
3840
final INDArray results = generateOutput(file);
41+
System.out.println(results);
3942
}
4043
}
4144

4245

43-

04_Building Convolutional Neural Networks/sourceCode/cookbookapp/src/main/java/com/javadeeplearningcookbook/examples/AnimalClassifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public static void main(String[] args) throws Exception {
5151
int batchSize=10;
5252

5353
//load files and split
54-
File parentDir = new File("C:\\Users\\Admin\\dl4j-examples\\dl4j-examples\\src\\main\\resources\\animals");
54+
File parentDir = new File("D:\\dataset");
5555
FileSplit fileSplit = new FileSplit(parentDir, NativeImageLoader.ALLOWED_FORMATS,new Random(42));
5656
int numLabels = fileSplit.getRootDir().listFiles(File::isDirectory).length;
5757

04_Building Convolutional Neural Networks/sourceCode/spring-dl4j/.gitignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,15 @@ HELP.md
2727

2828
### VS Code ###
2929
.vscode/
30+
31+
.idea
32+
*.tmp
33+
target
34+
cookbook-app.iml
35+
cookbook-app.iws
36+
cookbook-app.ipr
37+
cookbookapp.iml
38+
cookbookapp-cnn.iml
39+
dependency-reduced-pom.xml
40+
model.zip
41+
LocalExecuteExample.csv

04_Building Convolutional Neural Networks/sourceCode/spring-dl4j/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55
<parent>
66
<groupId>org.springframework.boot</groupId>
@@ -29,7 +29,7 @@
2929
</dependency>
3030
<dependency>
3131
<groupId>com.javadeeplearningcookbook.app</groupId>
32-
<artifactId>cookbookapp</artifactId>
32+
<artifactId>cookbookapp-cnn</artifactId>
3333
<version>1.0-SNAPSHOT</version>
3434
</dependency>
3535

04_Building Convolutional Neural Networks/sourceCode/spring-dl4j/src/main/java/com/springdl4j/springdl4j/SpringDl4jApplication.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55

6+
//Run this only after building project 'cookbookapp-cnn' and jar file is created.
67
@SpringBootApplication
78
public class SpringDl4jApplication {
89

04_Building Convolutional Neural Networks/sourceCode/spring-dl4j/src/main/java/com/springdl4j/springdl4j/service/CookBookServiceImpl.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.springdl4j.springdl4j.service;
22

3-
import com.javadeeplearningcookbook.api.CustomerRetentionPredictionApi;
3+
import com.javadeeplearningcookbook.api.ImageClassifierAPI;
44
import org.nd4j.linalg.api.ndarray.INDArray;
55
import org.springframework.stereotype.Service;
66
import org.springframework.web.multipart.MultipartFile;
77

88
import java.io.File;
99
import java.io.IOException;
10+
import java.text.DecimalFormat;
1011
import java.util.ArrayList;
1112
import java.util.List;
1213

@@ -18,14 +19,16 @@ public List<String> generateStringOutput(MultipartFile multipartFile) throws IOE
1819
final List<String> results = new ArrayList<>();
1920
File convFile = File.createTempFile(multipartFile.getOriginalFilename(),null, new File(System.getProperty("user.dir")+"/"));
2021
multipartFile.transferTo(convFile);
21-
INDArray indArray = AnimalClassifierAPI.generateOutput(convFile);
22+
INDArray indArray = ImageClassifierAPI.generateOutput(convFile);
23+
DecimalFormat df2 = new DecimalFormat("#.####");
2224
for(int i=0; i<indArray.rows();i++){
23-
if(indArray.getDouble(i,0)>indArray.getDouble(i,1)){
24-
results.add("Customer "+(i+1)+"-> Happy Customer \n");
25-
}
26-
else{
27-
results.add("Customer "+(i+1)+"-> Unhappy Customer \n");
25+
String result="Image "+String.valueOf(i)+"->>>>>";
26+
for(int j=0;j<indArray.columns();j++){
27+
result+="\n Category "+j+": "+df2.format(indArray.getDouble(i,j)*100)+"%, ";
2828
}
29+
result+="\n\n";
30+
results.add(result);
31+
2932
}
3033
convFile.deleteOnExit();
3134

0 commit comments

Comments
 (0)