Connections Per Second
Scott.Fahlman@B.GP.CS.CMU.EDU
Scott.Fahlman at B.GP.CS.CMU.EDU
Tue Aug 29 00:55:42 EDT 1989
A 128 input units, 64 hidden units, 128 output units 3-layer backprop
network (learning the encoder problem, say).
Let's say I can do 50 epochs of 128 exemplars in 41.54 seconds of this
network. Is it valid to say:
Number of connections per exemplar =
(128 * 64) + (128 * 64) [forward prop] +
(128 * 64) [back prop] = 24576
Number of connections per epoch = 24576 * 128 = 3145728
Number of connections per 50 epochs = 3145728 * 50 = 157286400
Divide by run time for 50 epochs = 157286400/41.54 = 3786384.2
Now, is it accurate to say my backprop program runs at 3.7 million
interconnections per second?
Is my claim still acceptable if I am actually performing the
neural network calculations by systollic array matrix multiplication?
I think that most of the CPS numbers that people quote are derived by
multiplying the total number of connections in the net times the number
pattern presentations divided by the total time required. You would not
count a connection twice just because the backprop algorithm happens to
use some or all of the weights twice.
For your example, I get (64 * 129) + (128 * 65) = 16,576 connections (don't
forget the bias connections), 6400 pattern presentations, and 41.54
seconds, for a grand total of 2.55 million CPS.
At least, that's how I would compute these numbers. Your milage may
differ. I suspect that some of the CPS numbers quoted for commercial
neural net simulators were computed using some other formula. When I talk
to people selling these simulators, I always try to pin them down on how
their CPS numbers were computed, but the marketing types seldom know the
gory details.
I think that it is reasonable to report "equivalent" CPS numbers, even if
your program actually does the computation in some other way -- computing
many epochs in parallel, for example.
-- Scott
More information about the Connectionists
mailing list