You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by la...@apache.org on 2019/05/11 00:12:38 UTC
[incubator-mxnet] branch master updated: Deprecate NDArrayCollector
and instead use ResourceScope (#14780)
This is an automated email from the ASF dual-hosted git repository.
lanking pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git
The following commit(s) were added to refs/heads/master by this push:
new 4796851 Deprecate NDArrayCollector and instead use ResourceScope (#14780)
4796851 is described below
commit 4796851b2fb2254899dd73e56dc9589666fb2d8c
Author: Zach Kimberg <ki...@amazon.com>
AuthorDate: Fri May 10 17:12:09 2019 -0700
Deprecate NDArrayCollector and instead use ResourceScope (#14780)
---
.../src/main/scala/org/apache/mxnet/NDArray.scala | 14 +++++--
.../scala/org/apache/mxnet/NDArrayCollector.scala | 6 +++
.../scala/org/apache/mxnet/ResourceScope.scala | 46 +++++++++++-----------
.../scala/org/apache/mxnet/io/NDArrayIter.scala | 2 +-
.../benchmark/ScalaInferenceBenchmark.scala | 8 ++--
.../CNNTextClassification.scala | 6 +--
.../mxnetexamples/customop/ExampleCustomOp.scala | 4 +-
.../org/apache/mxnetexamples/gan/GanMnist.scala | 6 +--
.../imageclassifier/ImageClassifierExample.scala | 4 +-
.../objectdetector/SSDClassifierExample.scala | 4 +-
.../mxnetexamples/multitask/ExampleMultiTask.scala | 4 +-
.../mxnetexamples/neuralstyle/NeuralStyle.scala | 2 +-
.../neuralstyle/end2end/BoostInference.scala | 6 +--
.../neuralstyle/end2end/BoostTrain.scala | 6 +--
.../apache/mxnetexamples/rnn/LstmBucketing.scala | 2 +-
.../org/apache/mxnetexamples/rnn/TestCharRnn.scala | 2 +-
.../apache/mxnetexamples/rnn/TrainCharRnn.scala | 2 +-
.../CNNClassifierExampleSuite.scala | 2 +-
.../apache/mxnetexamples/gan/GanExampleSuite.scala | 2 +-
.../neuralstyle/NeuralStyleSuite.scala | 2 +-
.../apache/mxnetexamples/rnn/ExampleRNNSuite.scala | 2 +-
21 files changed, 72 insertions(+), 60 deletions(-)
diff --git a/scala-package/core/src/main/scala/org/apache/mxnet/NDArray.scala b/scala-package/core/src/main/scala/org/apache/mxnet/NDArray.scala
index 3764f5a..4088801 100644
--- a/scala-package/core/src/main/scala/org/apache/mxnet/NDArray.scala
+++ b/scala-package/core/src/main/scala/org/apache/mxnet/NDArray.scala
@@ -741,10 +741,16 @@ object NDArray extends NDArrayBase {
* </b>
*/
class NDArray private[mxnet](private[mxnet] val handle: NDArrayHandle,
- val writable: Boolean = true,
- addToCollector: Boolean = true) extends NativeResource {
- if (addToCollector) {
- NDArrayCollector.collect(this)
+ val writable: Boolean) extends NativeResource {
+
+ @deprecated("Please use ResourceScope instead", "1.5.0")
+ def this(handle: NDArrayHandle,
+ writable: Boolean = true,
+ addToCollector: Boolean = true) {
+ this(handle, writable)
+ if (addToCollector) {
+ NDArrayCollector.collect(this)
+ }
}
override def nativeAddress: CPtrAddress = handle
diff --git a/scala-package/core/src/main/scala/org/apache/mxnet/NDArrayCollector.scala b/scala-package/core/src/main/scala/org/apache/mxnet/NDArrayCollector.scala
index 0b7f9af..0761481 100644
--- a/scala-package/core/src/main/scala/org/apache/mxnet/NDArrayCollector.scala
+++ b/scala-package/core/src/main/scala/org/apache/mxnet/NDArrayCollector.scala
@@ -64,6 +64,7 @@ import scala.collection.mutable
* });
* </pre>
*/
+@deprecated("Please use ResourceScope instead", "1.5.0")
object NDArrayCollector {
private val logger = LoggerFactory.getLogger(classOf[NDArrayCollector])
@@ -75,12 +76,14 @@ object NDArrayCollector {
* Create a collector which will dispose the collected NDArrays automatically.
* @return an auto-disposable collector.
*/
+ @deprecated("Please use ResourceScope instead", "1.5.0")
def auto(): NDArrayCollector = new NDArrayCollector(true)
/**
* Create a collector allows users to later dispose the collected NDArray manually.
* @return a manually-disposable collector.
*/
+ @deprecated("Please use ResourceScope instead", "1.5.0")
@Experimental
def manual(): NDArrayCollector = new NDArrayCollector(false)
@@ -88,11 +91,13 @@ object NDArrayCollector {
* Collect the NDArrays into the collector of the current thread.
* @param ndArray NDArrays need to be collected.
*/
+ @deprecated("Please use ResourceScope instead", "1.5.0")
@varargs def collect(ndArray: NDArray*): Unit = {
currCollector.get().add(ndArray: _*)
}
}
+@deprecated("Please use ResourceScope instead", "1.5.0")
class NDArrayCollector private(private val autoDispose: Boolean = true,
private val doCollect: Boolean = true) {
// native ptr (handle) of the NDArray -> NDArray
@@ -142,6 +147,7 @@ class NDArrayCollector private(private val autoDispose: Boolean = true,
* @return The result of function <em>codeBlock</em>.
*/
@Experimental
+ @deprecated("Please use ResourceScope instead", "1.5.0")
def withScope[T](codeBlock: => T): T = {
val old = NDArrayCollector.currCollector.get()
NDArrayCollector.currCollector.set(this)
diff --git a/scala-package/core/src/main/scala/org/apache/mxnet/ResourceScope.scala b/scala-package/core/src/main/scala/org/apache/mxnet/ResourceScope.scala
index b955c18..9a82287 100644
--- a/scala-package/core/src/main/scala/org/apache/mxnet/ResourceScope.scala
+++ b/scala-package/core/src/main/scala/org/apache/mxnet/ResourceScope.scala
@@ -64,6 +64,14 @@ class ResourceScope extends AutoCloseable {
}
/**
+ * Check if a NativeResource is in the scope
+ * @param resource
+ */
+ def contains(resource: NativeResource): Boolean = {
+ resourceQ.contains(resource)
+ }
+
+ /**
* Remove NativeResource from the Scope, this uses
* object equality to find the resource in the stack.
* @param resource
@@ -80,8 +88,10 @@ class ResourceScope extends AutoCloseable {
def moveToOuterScope(resource: NativeResource): Unit = {
val prevScope: Option[ResourceScope] = ResourceScope.getPrevScope()
if (prevScope.isDefined) {
- this.remove(resource)
- prevScope.get.add(resource)
+ if (contains(resource)) {
+ this.remove(resource)
+ prevScope.get.add(resource)
+ }
} else this.remove(resource)
}
@@ -109,20 +119,16 @@ object ResourceScope {
val curScope = if (scope != null) scope else new ResourceScope()
- @inline def resourceInGeneric(g: scala.collection.Iterable[_]) = {
- g.foreach( n =>
- n match {
- case nRes: NativeResource => {
- curScope.moveToOuterScope(nRes)
- }
- case kv: scala.Tuple2[_, _] => {
- if (kv._1.isInstanceOf[NativeResource]) curScope.moveToOuterScope(
- kv._1.asInstanceOf[NativeResource])
- if (kv._2.isInstanceOf[NativeResource]) curScope.moveToOuterScope(
- kv._2.asInstanceOf[NativeResource])
- }
- }
- )
+ def recursiveMoveToOuterScope(resource: Any): Unit = {
+ resource match {
+ case nRes: NativeResource => curScope.moveToOuterScope(nRes)
+ case ndRet: NDArrayFuncReturn => ndRet.arr.foreach( nd => curScope.moveToOuterScope(nd) )
+ case resInGeneric: scala.collection.Traversable[_] =>
+ resInGeneric.foreach(recursiveMoveToOuterScope)
+ case resProduct: scala.Product =>
+ resProduct.productIterator.foreach(recursiveMoveToOuterScope)
+ case _ => // do nothing
+ }
}
@inline def safeAddSuppressed(t: Throwable, suppressed: Throwable): Unit = {
@@ -133,13 +139,7 @@ object ResourceScope {
try {
val ret = body
- ret match {
- // don't de-allocate if returning any collection that contains NativeResource.
- case resInGeneric: scala.collection.Iterable[_] => resourceInGeneric(resInGeneric)
- case nRes: NativeResource => curScope.moveToOuterScope(nRes)
- case ndRet: NDArrayFuncReturn => ndRet.arr.foreach( nd => curScope.moveToOuterScope(nd) )
- case _ => // do nothing
- }
+ recursiveMoveToOuterScope(ret)
ret
} catch {
case t: Throwable =>
diff --git a/scala-package/core/src/main/scala/org/apache/mxnet/io/NDArrayIter.scala b/scala-package/core/src/main/scala/org/apache/mxnet/io/NDArrayIter.scala
index e951325..cda1818 100644
--- a/scala-package/core/src/main/scala/org/apache/mxnet/io/NDArrayIter.scala
+++ b/scala-package/core/src/main/scala/org/apache/mxnet/io/NDArrayIter.scala
@@ -177,7 +177,7 @@ class NDArrayIter(data: IndexedSeq[(DataDesc, NDArray)],
val shape = Shape(dataBatchSize) ++ ndArray.shape.slice(1, ndArray.shape.size)
// The new NDArray has to be created such that it inherits dtype from the passed in array
val newArray = NDArray.zeros(shape, dtype = ndArray.dtype)
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val batch = ndArray.slice(cursor, numData)
val padding = ndArray.slice(0, padNum)
newArray.slice(0, dataBatchSize - padNum).set(batch)
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/benchmark/ScalaInferenceBenchmark.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/benchmark/ScalaInferenceBenchmark.scala
index dc2faec..fde9bdb 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/benchmark/ScalaInferenceBenchmark.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/benchmark/ScalaInferenceBenchmark.scala
@@ -50,7 +50,7 @@ object ScalaInferenceBenchmark {
List[Long] = {
var inferenceTimes: List[Long] = List()
for (i <- 1 to totalRuns) {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val startTimeSingle = System.currentTimeMillis()
objectToRun.runSingleInference(loadedModel, dataSet)
val estimatedTimeSingle = System.currentTimeMillis() - startTimeSingle
@@ -67,7 +67,7 @@ object ScalaInferenceBenchmark {
var inferenceTimes: List[Long] = List()
for (batch <- dataSetBatches) {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val loadedBatch = objecToRun.loadInputBatch(batch)
val startTimeSingle = System.currentTimeMillis()
objecToRun.runBatchInference(loadedModel, loadedBatch)
@@ -133,7 +133,7 @@ object ScalaInferenceBenchmark {
logger.info("Running single inference call")
// Benchmarking single inference call
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val loadedModel = loadModel(exampleToBenchmark, context, false)
val dataSet = loadDataSet(exampleToBenchmark)
val inferenceTimes = runInference(exampleToBenchmark, loadedModel, dataSet, baseCLI.count)
@@ -143,7 +143,7 @@ object ScalaInferenceBenchmark {
if (baseCLI.batchSize != 0) {
logger.info("Running for batch inference call")
// Benchmarking batch inference call
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val loadedModel = loadModel(exampleToBenchmark, context, true)
val batchDataSet = loadBatchDataSet(exampleToBenchmark, baseCLI.batchSize)
val inferenceTimes = runBatchInference(exampleToBenchmark, loadedModel, batchDataSet)
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/cnntextclassification/CNNTextClassification.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/cnntextclassification/CNNTextClassification.scala
index d9902e9..04cc6e2 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/cnntextclassification/CNNTextClassification.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/cnntextclassification/CNNTextClassification.scala
@@ -18,7 +18,7 @@
package org.apache.mxnetexamples.cnntextclassification
import org.apache.mxnet.optimizer.RMSProp
-import org.apache.mxnet.{Context, Executor, Model, NDArray, NDArrayCollector, Optimizer, Shape, Symbol, Uniform}
+import org.apache.mxnet.{Context, Executor, Model, NDArray, Optimizer, ResourceScope, Shape, Symbol, Uniform}
import org.kohsuke.args4j.{CmdLineParser, Option}
import org.slf4j.LoggerFactory
@@ -131,7 +131,7 @@ object CNNTextClassification {
numTotal = 0f
updateRate = 0
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
for (begin <- 0 until trainBatches.length by batchSize) {
val (batchD, batchL) = {
if (begin + batchSize <= trainBatches.length) {
@@ -239,7 +239,7 @@ object CNNTextClassification {
def test(w2vFilePath : String, mrDatasetPath: String,
ctx : Context, saveModelPath: String) : Float = {
- val output = NDArrayCollector.auto().withScope {
+ val output = ResourceScope.using() {
val (numEmbed, word2vec) = DataHelper.loadGoogleModel(w2vFilePath)
val (datas, labels) = DataHelper.loadMSDataWithWord2vec(
mrDatasetPath, numEmbed, word2vec)
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/customop/ExampleCustomOp.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/customop/ExampleCustomOp.scala
index 0cfcc49..42922f2 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/customop/ExampleCustomOp.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/customop/ExampleCustomOp.scala
@@ -19,7 +19,7 @@ package org.apache.mxnetexamples.customop
import org.apache.mxnet.Callback.Speedometer
import org.apache.mxnet.DType.DType
-import org.apache.mxnet.{Accuracy, Context, CustomOp, CustomOpProp, NDArray, NDArrayCollector, Operator, Shape, Symbol, Xavier}
+import org.apache.mxnet.{Accuracy, Context, CustomOp, CustomOpProp, NDArray, Operator, ResourceScope, Shape, Symbol, Xavier}
import org.apache.mxnet.optimizer.RMSProp
import org.kohsuke.args4j.{CmdLineParser, Option}
import org.slf4j.LoggerFactory
@@ -141,7 +141,7 @@ object ExampleCustomOp {
evalMetric.reset()
var nBatch = 0
var epochDone = false
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
trainIter.reset()
while (!epochDone) {
var doReset = true
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/gan/GanMnist.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/gan/GanMnist.scala
index 475d91f..8b312c6 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/gan/GanMnist.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/gan/GanMnist.scala
@@ -17,7 +17,7 @@
package org.apache.mxnetexamples.gan
-import org.apache.mxnet.{Context, CustomMetric, DataBatch, IO, NDArray, NDArrayCollector, Shape, Symbol, Xavier}
+import org.apache.mxnet.{Context, CustomMetric, DataBatch, IO, NDArray, ResourceScope, Shape, Symbol, Xavier}
import org.apache.mxnet.optimizer.Adam
import org.kohsuke.args4j.{CmdLineParser, Option}
import org.slf4j.LoggerFactory
@@ -104,7 +104,7 @@ object GanMnist {
def runTraining(dataPath : String, context : Context,
outputPath : String, numEpoch : Int): Float = {
- val output = NDArrayCollector.auto().withScope {
+ val output = ResourceScope.using() {
val lr = 0.0005f
val beta1 = 0.5f
val batchSize = 100
@@ -147,7 +147,7 @@ object GanMnist {
t = 0
while (mnistIter.hasNext) {
dataBatch = mnistIter.next()
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
gMod.update(dataBatch)
gMod.dLabel.set(0f)
metricAcc.update(Array(gMod.dLabel), gMod.outputsFake)
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/imageclassifier/ImageClassifierExample.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/imageclassifier/ImageClassifierExample.scala
index c7f2fda..48e5500 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/imageclassifier/ImageClassifierExample.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/imageclassifier/ImageClassifierExample.scala
@@ -49,7 +49,7 @@ object ImageClassifierExample {
def runInferenceOnSingleImage(modelPathPrefix: String, inputImagePath: String,
context: Array[Context]):
IndexedSeq[IndexedSeq[(String, Float)]] = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val dType = DType.Float32
val inputShape = Shape(1, 3, 224, 224)
@@ -71,7 +71,7 @@ object ImageClassifierExample {
def runInferenceOnBatchOfImage(modelPathPrefix: String, inputImageDir: String,
context: Array[Context]):
IndexedSeq[IndexedSeq[(String, Float)]] = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val dType = DType.Float32
val inputShape = Shape(1, 3, 224, 224)
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/objectdetector/SSDClassifierExample.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/objectdetector/SSDClassifierExample.scala
index 07d1cc8..8c5366d 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/objectdetector/SSDClassifierExample.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/infer/objectdetector/SSDClassifierExample.scala
@@ -51,7 +51,7 @@ object SSDClassifierExample {
def runObjectDetectionSingle(modelPathPrefix: String, inputImagePath: String,
context: Array[Context]):
IndexedSeq[IndexedSeq[(String, Array[Float])]] = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val dType = DType.Float32
val inputShape = Shape(1, 3, 512, 512)
// ssd detections, numpy.array([[id, score, x1, y1, x2, y2]...])
@@ -68,7 +68,7 @@ object SSDClassifierExample {
def runObjectDetectionBatch(modelPathPrefix: String, inputImageDir: String,
context: Array[Context]):
IndexedSeq[IndexedSeq[(String, Array[Float])]] = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val dType = DType.Float32
val inputShape = Shape(1, 3, 512, 512)
// ssd detections, numpy.array([[id, score, x1, y1, x2, y2]...])
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/multitask/ExampleMultiTask.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/multitask/ExampleMultiTask.scala
index 5c17a37..e406c6d 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/multitask/ExampleMultiTask.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/multitask/ExampleMultiTask.scala
@@ -25,7 +25,7 @@ import org.slf4j.LoggerFactory
import scala.collection.JavaConverters._
import org.apache.commons.io.FileUtils
-import org.apache.mxnet.{Context, DataBatch, DataDesc, DataIter, EvalMetric, Executor, NDArray, NDArrayCollector, Shape, Symbol, Xavier}
+import org.apache.mxnet.{Context, DataBatch, DataDesc, DataIter, EvalMetric, Executor, NDArray, ResourceScope, Shape, Symbol, Xavier}
import org.apache.mxnet.DType.DType
import org.apache.mxnet.optimizer.RMSProp
import org.apache.mxnetexamples.Util
@@ -222,7 +222,7 @@ object ExampleMultiTask {
def train(batchSize: Int, numEpoch: Int, ctx: Context, modelDirPath: String):
(Executor, MultiAccuracy) = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val lr = 0.001f
val network = ExampleMultiTask.buildNetwork()
val (trainIter, valIter) =
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyle.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyle.scala
index 475e179..beb80ce 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyle.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyle.scala
@@ -170,7 +170,7 @@ object NeuralStyle {
contentWeight : Float, tvWeight : Float, gaussianRadius : Int,
lr: Float, maxNumEpochs: Int, maxLongEdge: Int,
saveEpochs : Int, stopEps: Float) : Unit = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val contentNp = preprocessContentImage(contentImage, maxLongEdge, dev)
val styleNp = preprocessStyleImage(styleImage, contentNp.shape, dev)
val size = (contentNp.shape(2), contentNp.shape(3))
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostInference.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostInference.scala
index b1e6634..cd1ed59 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostInference.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostInference.scala
@@ -17,7 +17,7 @@
package org.apache.mxnetexamples.neuralstyle.end2end
-import org.apache.mxnet.{Context, NDArrayCollector, Shape}
+import org.apache.mxnet.{Context, ResourceScope, Shape}
import org.kohsuke.args4j.{CmdLineParser, Option}
import org.slf4j.LoggerFactory
@@ -29,7 +29,7 @@ object BoostInference {
def runInference(modelPath: String, outputPath: String, guassianRadius : Int,
inputImage : String, ctx : Context): Unit = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val dShape = Shape(1, 3, 480, 640)
val clipNorm = 1.0f * dShape.product
// generator
@@ -47,7 +47,7 @@ object BoostInference {
DataProcessing.preprocessContentImage(s"$inputImage", dShape, ctx)
var data = Array(contentNp)
for (i <- 0 until gens.length) {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
gens(i).forward(data.takeRight(1))
val newImg = gens(i).getOutputs()(0)
data :+= newImg
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostTrain.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostTrain.scala
index 8246f44..1c9adba 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostTrain.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/neuralstyle/end2end/BoostTrain.scala
@@ -19,7 +19,7 @@ package org.apache.mxnetexamples.neuralstyle.end2end
import java.io.File
-import org.apache.mxnet.{Context, Executor, NDArray, NDArrayCollector, Shape, Symbol}
+import org.apache.mxnet.{Context, Executor, NDArray, ResourceScope, Shape, Symbol}
import org.apache.mxnet.optimizer.SGD
import org.kohsuke.args4j.{CmdLineParser, Option}
import org.slf4j.LoggerFactory
@@ -56,7 +56,7 @@ object BoostTrain {
def runTraining(dataPath : String, vggModelPath: String, ctx : Context,
styleImage : String, saveModelPath : String) : Unit = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
// params
val vggParams = NDArray.load2Map(vggModelPath)
val styleWeight = 1.2f
@@ -117,7 +117,7 @@ object BoostTrain {
// train
for (i <- startEpoch until endEpoch) {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
filelist = Random.shuffle(filelist)
for (idx <- filelist.indices) {
var dataArray = Array[NDArray]()
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/LstmBucketing.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/LstmBucketing.scala
index 8b2059d..d1a70a7 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/LstmBucketing.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/LstmBucketing.scala
@@ -62,7 +62,7 @@ object LstmBucketing {
def runTraining(trainData : String, validationData : String,
ctx : Array[Context], numEpoch : Int): Unit = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
val batchSize = 32
val buckets = Array(10, 20, 30, 40, 50, 60)
val numHidden = 200
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TestCharRnn.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TestCharRnn.scala
index bf2eba6..750fd98 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TestCharRnn.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TestCharRnn.scala
@@ -34,7 +34,7 @@ object TestCharRnn {
private val logger = LoggerFactory.getLogger(classOf[TrainCharRnn])
def runInferenceCharRNN(dataPath: String, modelPrefix: String, starterSentence : String): Unit = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
// The batch size for training
val batchSize = 32
// We can support various length input
diff --git a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TrainCharRnn.scala b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TrainCharRnn.scala
index 68346af..2704715 100644
--- a/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TrainCharRnn.scala
+++ b/scala-package/examples/src/main/scala/org/apache/mxnetexamples/rnn/TrainCharRnn.scala
@@ -33,7 +33,7 @@ object TrainCharRnn {
def runTrainCharRnn(dataPath: String, saveModelPath: String,
ctx : Context, numEpoch : Int): Unit = {
- NDArrayCollector.auto().withScope {
+ ResourceScope.using() {
// The batch size for training
val batchSize = 32
// We can support various length input
diff --git a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/cnntextclassification/CNNClassifierExampleSuite.scala b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/cnntextclassification/CNNClassifierExampleSuite.scala
index ae0ee33..0424c12 100644
--- a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/cnntextclassification/CNNClassifierExampleSuite.scala
+++ b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/cnntextclassification/CNNClassifierExampleSuite.scala
@@ -21,7 +21,7 @@ import java.io.File
import java.net.URL
import org.apache.commons.io.FileUtils
-import org.apache.mxnet.{Context, NDArrayCollector}
+import org.apache.mxnet.Context
import org.apache.mxnetexamples.Util
import org.scalatest.{BeforeAndAfterAll, FunSuite}
import org.slf4j.LoggerFactory
diff --git a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/gan/GanExampleSuite.scala b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/gan/GanExampleSuite.scala
index 709ea77..f6872ae 100644
--- a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/gan/GanExampleSuite.scala
+++ b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/gan/GanExampleSuite.scala
@@ -19,7 +19,7 @@ package org.apache.mxnetexamples.gan
import java.io.File
-import org.apache.mxnet.{Context, NDArrayCollector}
+import org.apache.mxnet.Context
import org.apache.mxnetexamples.Util
import org.scalatest.{BeforeAndAfterAll, FunSuite, Ignore}
import org.slf4j.LoggerFactory
diff --git a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyleSuite.scala b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyleSuite.scala
index c93a7d0..5b1cbc5 100644
--- a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyleSuite.scala
+++ b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/neuralstyle/NeuralStyleSuite.scala
@@ -17,7 +17,7 @@
package org.apache.mxnetexamples.neuralstyle
-import org.apache.mxnet.{Context, NDArrayCollector}
+import org.apache.mxnet.Context
import org.apache.mxnetexamples.Util
import org.apache.mxnetexamples.neuralstyle.end2end.{BoostInference, BoostTrain}
import org.scalatest.{BeforeAndAfterAll, FunSuite}
diff --git a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/rnn/ExampleRNNSuite.scala b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/rnn/ExampleRNNSuite.scala
index ff3fbe9..ca62f48 100644
--- a/scala-package/examples/src/test/scala/org/apache/mxnetexamples/rnn/ExampleRNNSuite.scala
+++ b/scala-package/examples/src/test/scala/org/apache/mxnetexamples/rnn/ExampleRNNSuite.scala
@@ -18,7 +18,7 @@
package org.apache.mxnetexamples.rnn
-import org.apache.mxnet.{Context, NDArrayCollector}
+import org.apache.mxnet.Context
import org.apache.mxnetexamples.Util
import org.scalatest.{BeforeAndAfterAll, FunSuite, Ignore}
import org.slf4j.LoggerFactory