# LSTM output with open memory workspace exception

**URL:** <https://community.konduit.ai/t/lstm-output-with-open-memory-workspace-exception/738>\
**Category:** DL4J\
**Created:** [July 21, 2020, 9:35am UTC](https://community.konduit.ai/t/lstm-output-with-open-memory-workspace-exception/738 "2020-07-21T09:35:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rolnire](https://yyz1.discourse-cdn.com/flex035/user_avatar/community.konduit.ai/rolnire/32/103_2.png) [@Rolnire](https://community.konduit.ai/u/Rolnire)\
**Post date:** [July 21, 2020, 9:35am UTC](https://community.konduit.ai/t/lstm-output-with-open-memory-workspace-exception/738/1 "2020-07-21T09:35:55Z")

</div>

Hello everyone,

If I am trying to get output with LSTM network inside open workspace, I am using this method output(inputINDArray, false, activeWs) as I am using with others non recurrent nets. But in case of LSTMs I am getting this exception:

> Blockquote  
> Exception in thread “main” org.nd4j.linalg.workspace.ND4JWorkspaceException: Cannot duplicate INDArray: Array outdated workspace pointer from workspace EVALUATION (array generation 1, current workspace generation 2)  
> All open workspaces: [WS\_LAYER\_WORKING\_MEM, EVALUATION, WS\_LAYER\_ACT\_1]  
> at org.nd4j.linalg.workspace.WorkspaceUtils.assertValidArray(WorkspaceUtils.java:126)  
> at org.nd4j.linalg.api.ndarray.BaseNDArray.dup(BaseNDArray.java:1707)  
> at org.deeplearning4j.nn.layers.recurrent.LSTMHelpers.activateHelper(LSTMHelpers.java:132)  
> at org.deeplearning4j.nn.layers.recurrent.LSTM.activateHelper(LSTM.java:171)  
> at org.deeplearning4j.nn.layers.recurrent.LSTM.activate(LSTM.java:143)  
> at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.outputOfLayerDetached(MultiLayerNetwork.java:1301)  
> at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.output(MultiLayerNetwork.java:2419)  
> at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.output(MultiLayerNetwork.java:2400)

Should this work with open workspace, or am I doing something wrong? I am getting same exception with CPU and also with GPU backend.

Thank you in advance for the advice

---

<div class="post-metadata">

**Author:** ![agibsonccc](https://yyz1.discourse-cdn.com/flex035/user_avatar/community.konduit.ai/agibsonccc/32/697_2.png) [@agibsonccc](https://community.konduit.ai/u/agibsonccc)\
**Post date:** [July 22, 2020, 12:23pm UTC](https://community.konduit.ai/t/lstm-output-with-open-memory-workspace-exception/738/2 "2020-07-22T12:23:08Z")

</div>

Could you post how you’re attempting to use workspaces here?

---

<div class="post-metadata">

**Author:** ![Rolnire](https://yyz1.discourse-cdn.com/flex035/user_avatar/community.konduit.ai/rolnire/32/103_2.png) [@Rolnire](https://community.konduit.ai/u/Rolnire)\
**Post date:** [July 23, 2020, 8:34am UTC](https://community.konduit.ai/t/lstm-output-with-open-memory-workspace-exception/738/3 "2020-07-23T08:34:22Z")

</div>

Of course 🙂

```
private WorkspaceConfiguration configuration;

private WorkspaceConfiguration getConfiguration() {
    if (configuration == null) {
        configuration = WorkspaceConfiguration.builder()
                .policyLearning(LearningPolicy.FIRST_LOOP)
                .policyAllocation(AllocationPolicy.STRICT)
                .build();
    }
    return configuration;
}

public void eval(TimeSeriesSampleList sampleList) {
    MemoryWorkspace workspace = Nd4j.getWorkspaceManager().getWorkspaceForCurrentThread(getConfiguration(), "EVALUATION");

    int index = 0;
    int size = sampleList.size();
    while (index < size) {
        MemoryWorkspace ws = workspace.notifyScopeEntered();
        int n = (index + batchSize) < size ? batchSize : size - index;
        List<TimeSeriesSample> batch = sampleList.subList(index, index + n);
        INDArray input = Nd4j.create(dataType, n, nFeatures, nInput);

        for (int j = 0; j < batch.size(); j++) {
            TimeSeriesSample sample = batch.get(j);
            input.put(new INDArrayIndex[]{new PointIndex(j)}, sample.getInput()); // sample.getInput() create new INDArray
        }

        double[][] output = model.output(input, false, ws).toDoubleMatrix();
        index += n;
        ws.close();
    }

```
