- (make-dense-layer input-size output-size #!key (activation (make-identity)) (use-bias #t) (dtype 'f32) (name "Dense")) -> layerprocedure
Creates a fully-connected (dense) layer with Xavier/Glorot initialization. Supports both single vectors and batches.
- input-size
- number of input features
- output-size
- number of output features
- activation
- activation function object (default identity)
- use-bias
- whether to include bias term (default #t)
- dtype
- 'f32 or 'f64 (default 'f32)
- name
- layer name for debugging
Input shapes:
- 1D: (input_size,) → output: (output_size,)
- 2D: (batch_size, input_size) → output: (batch_size, output_size)
For 2D inputs, uses BLAS GEMM for efficient batch processing.
(define layer (make-dense-layer 784 128 activation: (make-relu) name: "Hidden1")) ; Single input (define x (make-tensor32 (make-f32vector 784) '(784))) (define output (forward layer x)) ; Shape: (128,) ; Batch input (define batch-x (make-tensor32 (make-f32vector (* 32 784)) '(32 784))) (define batch-output (forward layer batch-x)) ; Shape: (32, 128)