bmitra
fd47759b0a
Merge branch 'master' of https://git01.codeplex.com/cntk into bmitra/Changes
2016-01-04 10:23:01 -08:00
Frank Seide
cfd4a8ee3f
Coup de grâce: the 3 basic elementwise arithmetic operation (plus, minus, element times) and the 6 main non-linearity nodes (all except softmax and GMM) have been replaced by the new tensor library. This makes the code significantly more compact and allows broadcasting along any dimension, e.g. for implementing the image bias
2016-01-01 20:38:31 -08:00
Frank Seide
2d8b9e7c6e
bug fix in ConvolutionEngineTests.cpp: when testing CPU, use HWC layout
2016-01-01 19:20:35 -08:00
Frank Seide
7ee40e6cc8
bug fix: Pooling nodes initialized wrong conv-engine factory class
2016-01-01 19:14:10 -08:00
Frank Seide
5bfc54b8a8
reenabled TensorView for PlusNode--nearly identical result Image/QuickE2E test
2016-01-01 17:46:05 -08:00
Frank Seide
61469c0638
temporarily disabled TensorView in PlusNode
2016-01-01 17:31:45 -08:00
Frank Seide
4adb66c764
added clipping of log and quotient, as SequenceTraining failed without
2016-01-01 17:27:36 -08:00
Frank Seide
b5a5c86020
made gcc happy
2016-01-01 16:47:20 -08:00
Frank Seide
e09548f391
replaced 6 non-linearity nodes by a single base class and 6 macros, as those 6 nodes were now structurally identical and only differed in TensorView opcodes
2016-01-01 16:38:20 -08:00
Frank Seide
351358eb46
implemented most non-linearity nodes using the tensor lib
2016-01-01 16:14:01 -08:00
Frank Seide
5ff5d685db
added imageLayout parameter to Convolution, MaxPooling, and AveragePooling (only Convolution had it, and BrainScrip only);
...
bug fix: LearnableParameter must also serialize m_sampleLayout
2016-01-01 15:05:19 -08:00
Frank Seide
50218cd031
Image/QuickE2E now implements both legacy and cudnn layouts, selected by a command-line overridable parameter 'useCuDnn' that defaults to cudnn;
...
added printfs to cunn tests
2016-01-01 13:18:49 -08:00
Frank Seide
ec29314a36
move ScaleNode, RowElementTimesNode, and ColumnElementTimesNode to EsotericNodes.h, to indicate that they are deprecated (which they will be once tensor lib is enabled generally);
...
changed Image/QuickE2E test to use cudnn
2016-01-01 13:04:59 -08:00
Frank Seide
1506c6780d
made gcc happy;
...
changed ConvolutionEngineTests.cpp to use CHW layout since it only runs with cuDNN
2016-01-01 12:45:08 -08:00
Frank Seide
0c79c928ff
cleanedup ConvolutionNode vs. image interpretation of TensorShape;
...
TensorOp() optimization to use SGEMM disabled for 'double' in Debug builds, so we get our code path tested once in a while;
fixed ConvolutionEngineTests.cpp w.r.t. Create();
removed unused InputIsImage() methods
2016-01-01 12:25:24 -08:00
Frank Seide
f369a8e94e
bug fix: that new call to cublas_gemm() should no lonver have the explicit casts to float*
2016-01-01 10:29:39 -08:00
Frank Seide
42ff20b864
(comment)
2015-12-30 21:20:11 -08:00
Frank Seide
9db7cce89a
towards passing the ImageLayoutKind into ConvolutionNode and friends;
...
ConvolutionEngineFactory::Create() now chooses the layout based on the user-specified ImageLayoutKind. Something is borked, this version mixes up dimensions somewhere
2015-12-30 21:19:03 -08:00
Frank Seide
d11532cf69
(deleted some obsolete debug code)
2015-12-30 19:55:06 -08:00
Frank Seide
9372b6afdd
bug fix: SetMaxTempMemSizeForCNN() was missing the 'double' case;
...
added an optimization to unary TensorOp() to use cublasS/Dgemm() when we are reducing a matrix
2015-12-30 19:51:28 -08:00
Frank Seide
329c77c3a4
switched ReduceElemType to ElemType instead of double while reenabling PlusNode TensorView--desparate to get Image/QuickE2E to pass
2015-12-30 16:55:27 -08:00
Frank Seide
9003f4cbdd
disabled TensorView for PlusNode::BackpropTo(), as that causes a difference for Image/QuickE2E;
...
GetTensorShape() now adds the column dimension as one more dimension
2015-12-30 16:40:49 -08:00
Frank Seide
411e21fad5
switched inaccurate Sigmoid() and PlusNode::BackpropTo() back on;
...
changed Image/QuickE2E to use BrainScript, in order to allow specifiyng tensor dimensions for the bias
2015-12-30 16:00:02 -08:00
Frank Seide
ac61d224f9
switched to new Sigmoid(), PlusNode::BackpropTo() still not TensorView
2015-12-30 14:51:52 -08:00
Frank Seide
6da94ebb73
re-disabled PlusNode::BackpropTo() once again
2015-12-30 14:40:53 -08:00
Frank Seide
ec4c08d6cd
reenabled ENABLE_BROADCASTING_ELEMENTTIMES
2015-12-30 14:31:35 -08:00
Frank Seide
50159b7215
switched TensorOp.h's Sigmoid() to the less accurate version from the .cuh file, to remove failure in SequenceTraining test. This is not good! Reenabled all TensorView
2015-12-30 14:30:30 -08:00
Frank Seide
3f5e5b9e40
disabled TensorView for PlusNode::BackpropTo() and SigmoidNode, now gives the same for Image/QuickE2E
2015-12-30 14:15:00 -08:00
Frank Seide
710e2b5dae
InputValue and LearnableParameter C++ objects now take their dimensions as a general tensor (but not yet on BS level);
...
InputValue no longer accepts a column argument (ignored in NDL, forbidden in BS);
bug fix in ConfigArray::AsVector()
2015-12-30 12:50:13 -08:00
Frank Seide
c6d908eff8
new optional NDL/BS parameter 'imageLayout' to say according to which of the two layouts (cudnn or CNTL legacy) we should interpret a W, H, C specification. Currently implemented for InputImage;
...
InputValue no longer accepts a 'cols' parameter. Instead, it ignores it and uses 0 instead, since InputValues must always be minibatches
2015-12-30 11:35:40 -08:00
Frank Seide
d0b5c8d3c4
bug fix: CeilDiv() overflowed for b == INT_MAX
2015-12-30 10:57:08 -08:00
Frank Seide
da2b298ca3
(fix in previous debug logging)
2015-12-30 09:44:45 -08:00
Frank Seide
91667acc6e
(added heavy logging to track down the crash)
2015-12-30 09:43:10 -08:00
Frank Seide
159e380cd7
(added logging for tracking down SeqTrain problem)
2015-12-30 09:13:30 -08:00
Frank Seide
44c1e5457a
merged GPUMatrixCUDAKernels.cuh DEF_ELEMENT_PRIMITIVE macro with TensorOps.h OverloadUnaryMathFns, as both did the same thing;
...
new #define ENABLE_BROADCASTING_ELEMENTTIMES to specifically select whether we want to replace ScaleNode etc with ElementTimesNode
2015-12-30 09:11:02 -08:00
Frank Seide
cd86e1f301
(comments)
2015-12-29 22:11:57 -08:00
Frank Seide
60187190a9
new base node UnaryElementWiseNode;
...
SigmoidNode implemented with that
2015-12-29 22:01:37 -08:00
Frank Seide
ed35440053
added new tensor operations: And, Or, Xor, ElementwiseProductWithSigmoidDerivative (SigmoidDerivative is only ever used in this context), and Clip
2015-12-29 21:29:17 -08:00
Frank Seide
c4356c16f2
reenabled all existing uses of TensorView;
...
ScaleNode and Row/ColumnElementTimesNode now implemented as ElementTimesNode
2015-12-29 20:50:54 -08:00
Frank Seide
e38b8288cb
cleaned up tensor reduction code
2015-12-29 20:13:10 -08:00
Frank Seide
4f298fa35d
intermediate check-in of heavily instrumented reduction code
2015-12-29 20:02:11 -08:00
Frank Seide
40733c2ab4
towards parallel reduction--works again with 1 block
2015-12-29 15:45:34 -08:00
Frank Seide
5fedb69ea9
towards pallel reduction with multiple chunks
2015-12-29 12:00:00 -08:00
Frank Seide
a1affda118
GridDim now distributes over multiprocs more evenly;
...
fixed two Jenkins failures (a linux link error and a log error)
2015-12-29 10:38:15 -08:00
Frank Seide
cdcc4bb3d2
new condition for tensor lib: output cannot be in-place and inverse-broadcasting (reducing) at the same time. This makes reduction easier
2015-12-28 23:48:40 -08:00
Frank Seide
01a33f7bea
towards reductions that don't fit into __shared__ memory
2015-12-28 23:07:36 -08:00
Frank Seide
c3cf76fc14
(minor change)
2015-12-28 21:35:57 -08:00
Frank Seide
e37a053842
TensorOpElement::Compute() now uses tree-based reduction
2015-12-28 20:53:04 -08:00
Frank Seide
24900d073f
made gcc happy
2015-12-28 20:03:50 -08:00
Frank Seide
d8ce6b71d1
GPUMatrix.cu split: moved TensorView support to separate compilation unit (GPUMatrix had gotten too large for MSVC to compile the fatbin file). No code change otherwise
2015-12-28 19:45:36 -08:00