dc.multiply_strided(hf, dc_nx);
Tensor cs_prev = m_cell_.getBatchSlice(start_timestep - 1, 1);
dc.multiply_strided(cs_prev, dhf);
+ } else {
+ dhf.setZero();
}
dc.multiply_strided(hg, dhi);
std::fill(data, data + size(), val);
}
-void Tensor::setZero() { sscal(size(), 0, getData(), 1); }
+void Tensor::setZero() {
+ if (contiguous)
+ sscal(size(), 0, getData(), 1);
+ else
+ apply_i([](float val) -> float { return 0; });
+}
std::vector<unsigned int> Tensor::argmax() const {
const float *data = getData();