33 use nf_layer, only: layer
44 use nf_conv2d_layer, only: conv2d_layer
55 use nf_dense_layer, only: dense_layer
6+ use nf_flatten_layer, only: flatten_layer
67 use nf_input1d_layer, only: input1d_layer
78 use nf_input3d_layer, only: input3d_layer
89 use nf_maxpool2d_layer, only: maxpool2d_layer
1112
1213contains
1314
14- pure module function input1d(layer_size) result(res)
15- integer , intent (in ) :: layer_size
15+ pure module function conv2d(filters, kernel_size, activation) result(res)
16+ integer , intent (in ) :: filters
17+ integer , intent (in ) :: kernel_size
18+ character (* ), intent (in ), optional :: activation
1619 type (layer) :: res
17- res % name = ' input'
18- res % layer_shape = [layer_size]
19- res % input_layer_shape = [integer :: ]
20- allocate (res % p, source= input1d_layer(layer_size))
21- res % initialized = .true.
22- end function input1d
2320
21+ res % name = ' conv2d'
2422
25- pure module function input3d(layer_shape) result(res)
26- integer , intent (in ) :: layer_shape(3 )
27- type (layer) :: res
28- res % name = ' input'
29- res % layer_shape = layer_shape
30- res % input_layer_shape = [integer :: ]
31- allocate (res % p, source= input3d_layer(layer_shape))
32- res % initialized = .true.
33- end function input3d
23+ if (present (activation)) then
24+ res % activation = activation
25+ else
26+ res % activation = ' sigmoid'
27+ end if
28+
29+ allocate ( &
30+ res % p, &
31+ source= conv2d_layer(filters, kernel_size, res % activation) &
32+ )
33+
34+ end function conv2d
3435
3536
3637 pure module function dense(layer_size, activation) result(res)
@@ -52,27 +53,33 @@ pure module function dense(layer_size, activation) result(res)
5253 end function dense
5354
5455
55- pure module function conv2d(filters, kernel_size, activation) result(res)
56- integer , intent (in ) :: filters
57- integer , intent (in ) :: kernel_size
58- character (* ), intent (in ), optional :: activation
56+ pure module function flatten() result(res)
5957 type (layer) :: res
58+ res % name = ' flatten'
59+ allocate (res % p, source= flatten_layer())
60+ end function flatten
6061
61- res % name = ' conv2d'
6262
63- if (present (activation)) then
64- res % activation = activation
65- else
66- res % activation = ' sigmoid'
67- end if
68-
69- allocate ( &
70- res % p, &
71- source= conv2d_layer(filters, kernel_size, res % activation) &
72- )
63+ pure module function input1d(layer_size) result(res)
64+ integer , intent (in ) :: layer_size
65+ type (layer) :: res
66+ res % name = ' input'
67+ res % layer_shape = [layer_size]
68+ res % input_layer_shape = [integer :: ]
69+ allocate (res % p, source= input1d_layer(layer_size))
70+ res % initialized = .true.
71+ end function input1d
7372
74- end function conv2d
7573
74+ pure module function input3d(layer_shape) result(res)
75+ integer , intent (in ) :: layer_shape(3 )
76+ type (layer) :: res
77+ res % name = ' input'
78+ res % layer_shape = layer_shape
79+ res % input_layer_shape = [integer :: ]
80+ allocate (res % p, source= input3d_layer(layer_shape))
81+ res % initialized = .true.
82+ end function input3d
7683
7784 pure module function maxpool2d(pool_size, stride) result(res)
7885 integer , intent (in ) :: pool_size
0 commit comments