31 import daal.algorithms.optimization_solver
as optimization_solver
32 import daal.algorithms.optimization_solver.mse
33 import daal.algorithms.optimization_solver.adagrad
34 import daal.algorithms.optimization_solver.iterative_solver
35 from daal.data_management
import (
36 DataSourceIface, FileDataSource, HomogenNumericTable, MergedNumericTable, NumericTableIface
39 utils_folder = os.path.realpath(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
40 if utils_folder
not in sys.path:
41 sys.path.insert(0, utils_folder)
42 from utils
import printNumericTable
44 datasetFileName = os.path.join(
'..',
'data',
'batch',
'mse.csv')
47 accuracyThreshold = 0.0000001
49 nIterations = halfNIterations * 2
53 startPoint = np.array([[8], [2], [1], [4]], dtype=np.float64)
55 if __name__ ==
"__main__":
58 dataSource = FileDataSource(datasetFileName,
59 DataSourceIface.notAllocateNumericTable,
60 DataSourceIface.doDictionaryFromContext)
63 data = HomogenNumericTable(nFeatures, 0, NumericTableIface.doNotAllocate)
64 dependentVariables = HomogenNumericTable(1, 0, NumericTableIface.doNotAllocate)
65 mergedData = MergedNumericTable(data, dependentVariables)
68 dataSource.loadDataBlock(mergedData)
70 nVectors = data.getNumberOfRows()
72 mseObjectiveFunction = optimization_solver.mse.Batch(nVectors)
73 mseObjectiveFunction.input.set(optimization_solver.mse.data, data)
74 mseObjectiveFunction.input.set(optimization_solver.mse.dependentVariables, dependentVariables)
77 adagradAlgorithm = optimization_solver.adagrad.Batch(mseObjectiveFunction)
80 adagradAlgorithm.input.setInput(optimization_solver.iterative_solver.inputArgument, HomogenNumericTable(startPoint))
81 adagradAlgorithm.parameter.learningRate = HomogenNumericTable(1, 1, NumericTableIface.doAllocate, learningRate)
82 adagradAlgorithm.parameter.nIterations = halfNIterations
83 adagradAlgorithm.parameter.accuracyThreshold = accuracyThreshold
84 adagradAlgorithm.parameter.batchSize = batchSize
85 adagradAlgorithm.parameter.optionalResultRequired =
True
89 res = adagradAlgorithm.compute()
92 printNumericTable(res.getResult(optimization_solver.iterative_solver.minimum),
"Minimum after first compute():")
93 printNumericTable(res.getResult(optimization_solver.iterative_solver.nIterations),
"Number of iterations performed:")
95 adagradAlgorithm.input.setInput(optimization_solver.iterative_solver.inputArgument, res.getResult(optimization_solver.iterative_solver.minimum))
96 adagradAlgorithm.input.setInput(optimization_solver.iterative_solver.optionalArgument, res.getResult(optimization_solver.iterative_solver.optionalResult))
98 res = adagradAlgorithm.compute()
100 printNumericTable(res.getResult(optimization_solver.iterative_solver.minimum),
"Minimum after second compute():")
101 printNumericTable(res.getResult(optimization_solver.iterative_solver.nIterations),
"Number of iterations performed:")