31 from daal.algorithms.neural_networks
import layers
32 from daal.algorithms.neural_networks
import prediction
34 import daal.algorithms.neural_networks.layers.fullyconnected.forward
35 import daal.algorithms.neural_networks.layers.softmax.forward
37 utils_folder = os.path.realpath(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
38 if utils_folder
not in sys.path:
39 sys.path.insert(0, utils_folder)
40 from utils
import printTensors, readTensorFromCSV
43 testDatasetFile = os.path.join(
"..",
"data",
"batch",
"neural_network_test.csv")
44 testGroundTruthFile = os.path.join(
"..",
"data",
"batch",
"neural_network_test_ground_truth.csv")
47 fc1WeightsFile = os.path.join(
"..",
"data",
"batch",
"fc1_weights.csv")
48 fc1BiasesFile = os.path.join(
"..",
"data",
"batch",
"fc1_biases.csv")
49 fc2WeightsFile = os.path.join(
"..",
"data",
"batch",
"fc2_weights.csv")
50 fc2BiasesFile = os.path.join(
"..",
"data",
"batch",
"fc2_biases.csv")
60 fullyConnectedLayer1 = layers.fullyconnected.forward.Batch(5)
63 fullyConnectedLayer2 = layers.fullyconnected.forward.Batch(2)
66 softmaxLayer = layers.softmax.forward.Batch()
69 topology = prediction.Topology()
72 topology.push_back(fullyConnectedLayer1)
73 topology.push_back(fullyConnectedLayer2)
74 topology.push_back(softmaxLayer)
75 topology.get(fc1).addNext(fc2)
76 topology.get(fc2).addNext(sm1)
82 predictionData = readTensorFromCSV(testDatasetFile)
85 topology = configureNet()
88 predictionModel = prediction.Model(topology)
92 fc1Weights = readTensorFromCSV(fc1WeightsFile)
94 fc1Biases = readTensorFromCSV(fc1BiasesFile)
97 fc1Input = predictionModel.getLayer(fc1).getLayerInput()
98 fc1Input.setInput(layers.forward.weights, fc1Weights)
99 fc1Input.setInput(layers.forward.biases, fc1Biases)
102 fc1Parameter = predictionModel.getLayer(fc1).getLayerParameter()
103 fc1Parameter.weightsAndBiasesInitialized =
True
107 fc2Weights = readTensorFromCSV(fc2WeightsFile)
109 fc2Biases = readTensorFromCSV(fc2BiasesFile)
112 fc2Input = predictionModel.getLayer(fc2).getLayerInput()
113 fc2Input.setInput(layers.forward.weights, fc2Weights)
114 fc2Input.setInput(layers.forward.biases, fc2Biases)
117 fc2Parameter = predictionModel.getLayer(fc2).getLayerParameter()
118 fc2Parameter.weightsAndBiasesInitialized =
True
120 return (predictionData, predictionModel)
123 def testModel(predictionData, predictionModel):
125 net = prediction.Batch()
127 net.parameter.batchSize = predictionData.getDimensionSize(0)
130 net.input.setModelInput(prediction.model, predictionModel)
131 net.input.setTensorInput(prediction.data, predictionData)
138 def printResults(predictionResult):
140 predictionGroundTruth = readTensorFromCSV(testGroundTruthFile)
141 printTensors(predictionGroundTruth, predictionResult.getResult(prediction.prediction),
142 "Ground truth",
"Neural network predictions: each class probability",
143 "Neural network classification results (first 20 observations):", 20)
146 if __name__ ==
"__main__":
147 (predictionData, predictionModel) = createModel()
149 predictionResult = testModel(predictionData, predictionModel)
151 printResults(predictionResult)