1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
@startuml
class Session {
-String name
void schedule_session()
void run_session()
}
abstract class Device {
-int id
}
class Node {
}
class Edge {
- shape3d shape
}
abstract class Layer {
- String layer_type
virtual void forward_propagation()
virtual void backward_propagation()
}
class ConvolutionalLayer {
}
class MaxPoolingLayer {
}
abstract class Backend {
virtual void matmul()
virtual pool2d()
virtual conv2d()
virtual conv2d_back()
}
class TinyCNNBackend {
}
class NNPackBackend {
}
class LibDNNBackend {
}
Session *-- Device
Device <|-- CPUDevice
Device <|-- OCLDevice
Node <|-- Layer
Node *-- Edge : prev
Node *-- Edge : next
Edge --> Node : prev
Edge *-- Node : next
Edge *-- Data : data
Edge *-- Data : grad
Layer <|-- ConvolutionalLayer
Layer <|-- MaxPoolingLayer
Device *-- Backend : own_list
ConvolutionalLayer *-- Backend : backend
MaxPoolingLayer *-- Backend : backend
Backend <|-- TinyCNNBackend
Backend <|-- NNPackBackend
Backend <|-- LibDNNBackend
@enduml
|