<commit_before>/*
 * Copyright 2016 The BigDL Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.intel.analytics.bigdl.nn

import com.intel.analytics.bigdl.tensor.Tensor
import com.intel.analytics.bigdl.utils.RandomGenerator._
import org.scalatest.{FlatSpec, Matchers}

class TimeDistributedSpec extends FlatSpec with Matchers {
  "A TimeDistributed Module" should " hash code correctly" in {
    RNG.setSeed(100)
    val batchSize = 5
    val times = 5
    val inputDim = 3
    val outputDim = 4
    val timeDim = 1
    val input = Tensor[Float](Array(batchSize, times, inputDim)).randn()<commit_msg>add unit test for revision in TimeDistributed Layer<commit_after>/*
 * Copyright 2016 The BigDL Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.intel.analytics.bigdl.nn

import com.intel.analytics.bigdl.tensor.Tensor
import com.intel.analytics.bigdl.utils.RandomGenerator._
import org.scalatest.{FlatSpec, Matchers}

class TimeDistributedSpec extends FlatSpec with Matchers {
  "A TimeDistributed Module" should " reset correctly" in {
    RNG.setSeed(100)
    val batchSize = 5
    val times = 5
    val inputDim = 3
    val outputDim = 4
    val timeDim = 1
    val input = Tensor[Float](Array(batchSize, times, inputDim)).randn()
    val gradOutput = Tensor[Float](Array(batchSize, times, outputDim)).randn()
    val linear = Linear[Float](inputDim, outputDim)
    val model = TimeDistributed[Float](linear)

    val output = model.forward(input)
    val gradInput = model.backward(input, gradOutput)

    model.reset()

    gradOutput should not be (null)
    gradInput should not be (null)
  }

  "A TimeDistributed Module" should " hash code correctly" in {
    RNG.setSeed(100)
    val batchSize = 5
    val times = 5
    val inputDim = 3
    val outputDim = 4
    val timeDim = 1
    val input = Tensor[Float](Array(batchSize, times, inputDim)).randn()
{'fraction_non_alphanumeric': 0.08430034129692833, 'fraction_numerical': 0.013651877133105802, 'mean_word_length': 3.6971153846153846, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2020143', 'n_tokens_mistral': 863, 'n_tokens_neox': 823, 'n_words': 320}