/// <inheritdoc/> Tensor IOps.Conv3D(Tensor X, Tensor K, Tensor B, int[] stride, int[] pad, Layer.FusedActivation fusedActivation) { LogLayerSummary(X.shape + " # " + K.shape + " + (" + B.flatWidth + ")"); var O = m_Ops.Conv3D(X, K, B, stride, pad, fusedActivation); LogOutputTensorSummary(O, Prefix + "Conv3D"); return O; }
/// <inheritdoc/> Tensor IOps.Conv3D(Tensor X, Tensor K, Tensor B, int[] stride, int[] pad, Layer.FusedActivation fusedActivation) { var Y = m_Ops1.Conv3D(X, K, B, stride, pad, fusedActivation); var Z = m_Ops2.Conv3D(X, K, B, stride, pad, fusedActivation); CheckSame(Y, Z, Layer.Type.Conv3D); return(Y); }
/// <inheritdoc/> Tensor IOps.Conv3D(Tensor X, Tensor K, Tensor B, int[] stride, int[] pad, Layer.FusedActivation fusedActivation) { D.Log(X.shape + " # " + K.shape + " + (" + B.flatWidth + ")"); var O = m_Ops.Conv3D(X, K, B, stride, pad, fusedActivation); O.PrintDataPart(32, Prefix + "Conv3D"); return(O); }
/// <inheritdoc/> Tensor IOps.Conv3D(Tensor X, Tensor K, Tensor B, int[] stride, int[] pad, Layer.FusedActivation fusedActivation) { var O = m_Ops.Conv3D(X, K, B, stride, pad, fusedActivation); long m = (long)O.batch * (long)O.width * (long)O.height * O.depth; long n = (long)X.channels; long k = (long)K.kernelSpatialDepth * K.kernelWidth * (long)K.kernelHeight * (long)K.channels; m_Alu += m * n * k * 2L; m_Mem += (long)X.length + (long)K.length + (long)B.length + (long)O.length; return(O); }