55 from daal.algorithms.neural_networks
import layers
56 from daal.algorithms.neural_networks
import prediction
58 import daal.algorithms.neural_networks.layers.fullyconnected.forward
59 import daal.algorithms.neural_networks.layers.softmax.forward
61 utils_folder = os.path.realpath(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
62 if utils_folder
not in sys.path:
63 sys.path.insert(0, utils_folder)
64 from utils
import printTensors, readTensorFromCSV
67 testDatasetFile = os.path.join(
"..",
"data",
"batch",
"neural_network_test.csv")
68 testGroundTruthFile = os.path.join(
"..",
"data",
"batch",
"neural_network_test_ground_truth.csv")
71 fc1WeightsFile = os.path.join(
"..",
"data",
"batch",
"fc1_weights.csv")
72 fc1BiasesFile = os.path.join(
"..",
"data",
"batch",
"fc1_biases.csv")
73 fc2WeightsFile = os.path.join(
"..",
"data",
"batch",
"fc2_weights.csv")
74 fc2BiasesFile = os.path.join(
"..",
"data",
"batch",
"fc2_biases.csv")
84 fullyConnectedLayer1 = layers.fullyconnected.forward.Batch(5)
87 fullyConnectedLayer2 = layers.fullyconnected.forward.Batch(2)
90 softmaxLayer = layers.softmax.forward.Batch()
93 topology = prediction.Topology()
96 topology.push_back(fullyConnectedLayer1)
97 topology.push_back(fullyConnectedLayer2)
98 topology.push_back(softmaxLayer)
99 topology.get(fc1).addNext(fc2)
100 topology.get(fc2).addNext(sm1)
106 predictionData = readTensorFromCSV(testDatasetFile)
109 topology = configureNet()
112 predictionModel = prediction.Model(topology)
116 fc1Weights = readTensorFromCSV(fc1WeightsFile)
118 fc1Biases = readTensorFromCSV(fc1BiasesFile)
121 fc1Input = predictionModel.getLayer(fc1).getLayerInput()
122 fc1Input.setInput(layers.forward.weights, fc1Weights)
123 fc1Input.setInput(layers.forward.biases, fc1Biases)
126 fc1Parameter = predictionModel.getLayer(fc1).getLayerParameter()
127 fc1Parameter.weightsAndBiasesInitialized =
True 131 fc2Weights = readTensorFromCSV(fc2WeightsFile)
133 fc2Biases = readTensorFromCSV(fc2BiasesFile)
136 fc2Input = predictionModel.getLayer(fc2).getLayerInput()
137 fc2Input.setInput(layers.forward.weights, fc2Weights)
138 fc2Input.setInput(layers.forward.biases, fc2Biases)
141 fc2Parameter = predictionModel.getLayer(fc2).getLayerParameter()
142 fc2Parameter.weightsAndBiasesInitialized =
True 144 return (predictionData, predictionModel)
147 def testModel(predictionData, predictionModel):
149 net = prediction.Batch()
151 net.parameter.batchSize = predictionData.getDimensionSize(0)
154 net.input.setModelInput(prediction.model, predictionModel)
155 net.input.setTensorInput(prediction.data, predictionData)
162 def printResults(predictionResult):
164 predictionGroundTruth = readTensorFromCSV(testGroundTruthFile)
165 printTensors(predictionGroundTruth, predictionResult.getResult(prediction.prediction),
166 "Ground truth",
"Neural network predictions: each class probability",
167 "Neural network classification results (first 20 observations):", 20)
170 if __name__ ==
"__main__":
171 (predictionData, predictionModel) = createModel()
173 predictionResult = testModel(predictionData, predictionModel)
175 printResults(predictionResult)