3
3
use nf_layer, only: layer
4
4
use nf_conv2d_layer, only: conv2d_layer
5
5
use nf_dense_layer, only: dense_layer
6
+ use nf_flatten_layer, only: flatten_layer
6
7
use nf_input1d_layer, only: input1d_layer
7
8
use nf_input3d_layer, only: input3d_layer
8
9
use nf_maxpool2d_layer, only: maxpool2d_layer
11
12
12
13
contains
13
14
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
16
19
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
23
20
21
+ res % name = ' conv2d'
24
22
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
34
35
35
36
36
37
pure module function dense(layer_size, activation) result(res)
@@ -52,27 +53,33 @@ pure module function dense(layer_size, activation) result(res)
52
53
end function dense
53
54
54
55
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)
59
57
type (layer) :: res
58
+ res % name = ' flatten'
59
+ allocate (res % p, source= flatten_layer())
60
+ end function flatten
60
61
61
- res % name = ' conv2d'
62
62
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
73
72
74
- end function conv2d
75
73
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
76
83
77
84
pure module function maxpool2d(pool_size, stride) result(res)
78
85
integer , intent (in ) :: pool_size
0 commit comments