Loading TOC...

cntk:train-minibatch

cntk:train-minibatch(
   $trainer as cntk:trainer,
   $variable-value-map as json:array,
   [$is-sweep-end as xs:boolean],
   [$device as cntk:device]
) as xs:boolean

Summary

Optimize model parameter using a minibatch of training data. Returns true on success.

Parameters
$trainer
$variable-value-map The same variable value map used in cntk:evaluate. It's an array of array, with each inner array being a pair of input variable and its value. You must supply value for all input variables.
$is-sweep-end Whether this minibatch marks the end of an epoch. Defaults to false.
$device The device descriptor that contains the type and id of the device on which the computation is to be performed.

Required Privileges

http://marklogic.com/cntk/privileges/cntk-train-minibatch

Example

  xquery version "1.0-ml";
  let $num-classes := 2
  let $num-samples :=5
  let $input-shape := cntk:shape((64,28,3))
  let $input-variable := cntk:input-variable($input-shape, "float")
  let $convolution-option := map:map()=>
                            map:with("filter-shape", (3,3))=>
                            map:with("num-filters", 10)=>
                            map:with("auto-padding", fn:false())
  let $W := cntk:parameter(cntk:shape((3,3,3,10)), "float", cntk:glorot-uniform-initializer())
  let $convolved-variable := cntk:convolution($W, $input-variable, $convolution-option)
  let $dense-option := map:map()=>
                      map:with("output-shape", cntk:shape(($num-classes)))
  let $dense-output := cntk:dense-layer($convolved-variable, $dense-option)
  let $input-value-array := json:to-array((1 to 64*28*3*$num-samples))
  let $input-value := cntk:batch($input-shape, $input-value-array)
  let $label-shape := cntk:shape(($num-classes))
  let $label-variable := cntk:input-variable($label-shape, "float")
  let $label-array := json:to-array((1,0,0,1,0,1,1,0,0,1))
  let $label-value := cntk:batch($label-shape, $label-array)
  let $learner := cntk:sgd-learner((cntk:function-parameters($dense-output)), cntk:learning-rate-schedule-from-constant(0.1))
  let $loss := cntk:cross-entropy-with-softmax($dense-output, $label-variable, cntk:axis(-1))
  let $trainer := cntk:trainer($dense-output, ($learner), $loss)
  let $input-pair := json:to-array(($input-variable, $input-value))
  let $label-pair := json:to-array(($label-variable, $label-value))
  let $minibatch := json:to-array(($input-pair, $label-pair))
  return cntk:train-minibatch($trainer, $minibatch, fn:false())
  => true

Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.