Skip to content

Commit d36edc7

Browse files
Riccardo OrsiRiccardo Orsi
authored andcommitted
First change; take a look
1 parent b2073fa commit d36edc7

10 files changed

+33
-91
lines changed

src/nf/nf_conv1d_layer.f90

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ module nf_conv1d_layer
3333
procedure :: backward
3434
procedure :: get_gradients_ptr
3535
procedure :: get_num_params
36-
procedure :: get_params
3736
procedure :: get_params_ptr
3837
procedure :: init
3938
procedure :: set_params
@@ -89,15 +88,6 @@ pure module function get_num_params(self) result(num_params)
8988
!! Number of parameters
9089
end function get_num_params
9190

92-
module function get_params(self) result(params)
93-
!! Return the parameters (weights and biases) of this layer.
94-
!! The parameters are ordered as weights first, biases second.
95-
class(conv1d_layer), intent(in), target :: self
96-
!! A `conv1d_layer` instance
97-
real, allocatable :: params(:)
98-
!! Parameters to get
99-
end function get_params
100-
10191
module subroutine get_params_ptr(self, w_ptr, b_ptr)
10292
!! Return pointers to the parameters (weights and biases) of this layer.
10393
class(conv1d_layer), intent(in), target :: self

src/nf/nf_conv1d_layer_submodule.f90

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,6 @@ pure module function get_num_params(self) result(num_params)
144144
num_params = product(shape(self % kernel)) + size(self % biases)
145145
end function get_num_params
146146

147-
module function get_params(self) result(params)
148-
class(conv1d_layer), intent(in), target :: self
149-
real, allocatable :: params(:)
150-
real, pointer :: w_(:) => null()
151-
w_(1:size(self % kernel)) => self % kernel
152-
params = [ w_, self % biases]
153-
end function get_params
154-
155147
module subroutine get_params_ptr(self, w_ptr, b_ptr)
156148
class(conv1d_layer), intent(in), target :: self
157149
real, pointer, intent(out) :: w_ptr(:)

src/nf/nf_conv2d_layer.f90

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ module nf_conv2d_layer
3434
procedure :: backward
3535
procedure :: get_gradients_ptr
3636
procedure :: get_num_params
37-
procedure :: get_params
3837
procedure :: get_params_ptr
3938
procedure :: init
4039
procedure :: set_params
@@ -90,15 +89,6 @@ pure module function get_num_params(self) result(num_params)
9089
!! Number of parameters
9190
end function get_num_params
9291

93-
module function get_params(self) result(params)
94-
!! Return the parameters (weights and biases) of this layer.
95-
!! The parameters are ordered as weights first, biases second.
96-
class(conv2d_layer), intent(in), target :: self
97-
!! A `conv2d_layer` instance
98-
real, allocatable :: params(:)
99-
!! Parameters to get
100-
end function get_params
101-
10292
module subroutine get_params_ptr(self, w_ptr, b_ptr)
10393
!! Return pointers to the parameters (weights and biases) of this layer.
10494
class(conv2d_layer), intent(in), target :: self

src/nf/nf_conv2d_layer_submodule.f90

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -188,22 +188,6 @@ pure module function get_num_params(self) result(num_params)
188188
num_params = product(shape(self % kernel)) + size(self % biases)
189189
end function get_num_params
190190

191-
192-
module function get_params(self) result(params)
193-
class(conv2d_layer), intent(in), target :: self
194-
real, allocatable :: params(:)
195-
196-
real, pointer :: w_(:) => null()
197-
198-
w_(1:size(self % kernel)) => self % kernel
199-
200-
params = [ &
201-
w_, &
202-
self % biases &
203-
]
204-
205-
end function get_params
206-
207191

208192
module subroutine get_params_ptr(self, w_ptr, b_ptr)
209193
class(conv2d_layer), intent(in), target :: self

src/nf/nf_dense_layer.f90

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ module nf_dense_layer
3535
procedure :: forward
3636
procedure :: get_gradients_ptr
3737
procedure :: get_num_params
38-
procedure :: get_params
3938
procedure :: get_params_ptr
4039
procedure :: init
4140
procedure :: set_params
@@ -88,15 +87,6 @@ pure module function get_num_params(self) result(num_params)
8887
!! Number of parameters in this layer
8988
end function get_num_params
9089

91-
module function get_params(self) result(params)
92-
!! Return the parameters (weights and biases) of this layer.
93-
!! The parameters are ordered as weights first, biases second.
94-
class(dense_layer), intent(in), target :: self
95-
!! Dense layer instance
96-
real, allocatable :: params(:)
97-
!! Parameters of this layer
98-
end function get_params
99-
10090
module subroutine get_params_ptr(self, w_ptr, b_ptr)
10191
class(dense_layer), intent(in), target :: self
10292
real, pointer, intent(out) :: w_ptr(:)

src/nf/nf_dense_layer_submodule.f90

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,6 @@ pure module function get_num_params(self) result(num_params)
6161
end function get_num_params
6262

6363

64-
module function get_params(self) result(params)
65-
class(dense_layer), intent(in), target :: self
66-
real, allocatable :: params(:)
67-
68-
real, pointer :: w_(:) => null()
69-
70-
w_(1:size(self % weights)) => self % weights
71-
72-
params = [ &
73-
w_, &
74-
self % biases &
75-
]
76-
77-
end function get_params
78-
79-
8064
module subroutine get_params_ptr(self, w_ptr, b_ptr)
8165
class(dense_layer), intent(in), target :: self
8266
real, pointer, intent(out) :: w_ptr(:)

src/nf/nf_layer.f90

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,17 @@ module function get_params(self) result(params)
160160
!! Parameters of this layer
161161
end function get_params
162162

163+
module subroutine get_params_ptr(self, w_ptr, b_ptr)
164+
!! Returns the parameters of this layer as pointers.
165+
!! This is used for layers that have weights and biases.
166+
class(layer), intent(in) :: self
167+
!! Layer instance
168+
real, pointer :: w_ptr(:)
169+
!! Pointer to weights of this layer
170+
real, pointer :: b_ptr(:)
171+
!! Pointer to biases of this layer
172+
end subroutine get_params_ptr
173+
163174
module subroutine set_params(self, params)
164175
!! Returns the parameters of this layer.
165176
class(layer), intent(in out) :: self

src/nf/nf_layer_submodule.f90

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,8 @@ end function get_num_params
640640
module function get_params(self) result(params)
641641
class(layer), intent(in) :: self
642642
real, allocatable :: params(:)
643+
real, pointer :: w_ptr(:)
644+
real, pointer :: b_ptr(:)
643645

644646
select type (this_layer => self % p)
645647
type is (input1d_layer)
@@ -649,15 +651,27 @@ module function get_params(self) result(params)
649651
type is (input3d_layer)
650652
! No parameters to get.
651653
type is (dense_layer)
652-
params = this_layer % get_params()
654+
call this_layer % get_params_ptr(w_ptr, b_ptr)
655+
allocate(params(size(w_ptr) + size(b_ptr)))
656+
params(1:size(w_ptr)) = w_ptr
657+
params(size(w_ptr)+1:) = b_ptr
653658
type is (dropout_layer)
654659
! No parameters to get.
655660
type is (conv1d_layer)
656-
params = this_layer % get_params()
661+
call this_layer % get_params_ptr(w_ptr, b_ptr)
662+
allocate(params(size(w_ptr) + size(b_ptr)))
663+
params(1:size(w_ptr)) = w_ptr
664+
params(size(w_ptr)+1:) = b_ptr
657665
type is (conv2d_layer)
658-
params = this_layer % get_params()
666+
call this_layer % get_params_ptr(w_ptr, b_ptr)
667+
allocate(params(size(w_ptr) + size(b_ptr)))
668+
params(1:size(w_ptr)) = w_ptr
669+
params(size(w_ptr)+1:) = b_ptr
659670
type is (locally_connected2d_layer)
660-
params = this_layer % get_params()
671+
call this_layer % get_params_ptr(w_ptr, b_ptr)
672+
allocate(params(size(w_ptr) + size(b_ptr)))
673+
params(1:size(w_ptr)) = w_ptr
674+
params(size(w_ptr)+1:) = b_ptr
661675
type is (maxpool1d_layer)
662676
! No parameters to get.
663677
type is (maxpool2d_layer)
@@ -669,7 +683,10 @@ module function get_params(self) result(params)
669683
type is (reshape3d_layer)
670684
! No parameters to get.
671685
type is (linear2d_layer)
672-
params = this_layer % get_params()
686+
call this_layer % get_params_ptr(w_ptr, b_ptr)
687+
allocate(params(size(w_ptr) + size(b_ptr)))
688+
params(1:size(w_ptr)) = w_ptr
689+
params(size(w_ptr)+1:) = b_ptr
673690
type is (self_attention_layer)
674691
params = this_layer % get_params()
675692
type is (embedding_layer)

src/nf/nf_locally_connected2d_layer.f90

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ module nf_locally_connected2d_layer
3434
procedure :: get_gradients
3535
procedure :: get_gradients_ptr
3636
procedure :: get_num_params
37-
procedure :: get_params
3837
procedure :: get_params_ptr
3938
procedure :: init
4039
procedure :: set_params
@@ -90,15 +89,6 @@ pure module function get_num_params(self) result(num_params)
9089
!! Number of parameters
9190
end function get_num_params
9291

93-
module function get_params(self) result(params)
94-
!! Return the parameters (weights and biases) of this layer.
95-
!! The parameters are ordered as weights first, biases second.
96-
class(locally_connected2d_layer), intent(in), target :: self
97-
!! A `locally_connected2d_layer` instance
98-
real, allocatable :: params(:)
99-
!! Parameters to get
100-
end function get_params
101-
10292
module subroutine get_params_ptr(self, w_ptr, b_ptr)
10393
class(locally_connected2d_layer), intent(in), target :: self
10494
real, pointer, intent(out) :: w_ptr(:)

src/nf/nf_locally_connected2d_layer_submodule.f90

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,6 @@ pure module function get_num_params(self) result(num_params)
122122
num_params = product(shape(self % kernel)) + product(shape(self % biases))
123123
end function get_num_params
124124

125-
module function get_params(self) result(params)
126-
class(locally_connected2d_layer), intent(in), target :: self
127-
real, allocatable :: params(:)
128-
params = [self % kernel, self % biases]
129-
end function get_params
130-
131125
module subroutine get_params_ptr(self, w_ptr, b_ptr)
132126
class(locally_connected2d_layer), intent(in), target :: self
133127
real, pointer, intent(out) :: w_ptr(:)

0 commit comments

Comments
 (0)