Hi,

I have a parameter vector and shape array as below:

```
shape =[((2,5),2),((2,2),2)] #shape of layers : weights and bias
```

`w = rand(18) #weights and bias together.`

In this case elements of `w`

are divided as below:

- First 10 elements of
`w`

are weights of layer 1
- Next 2 elements of
`w`

are bias of layer 1
- First 4elements of
`w`

are weights of layer 2
- Next 2 elements of
`w`

are bias of layer 2

What will be the best way to create a Flux model using like below using elements of `w`

`Chain(Dense(5,2), Dense(2,2))`

Thanks and Regards

Manu

I would first create the model using something like

```
model = Chain(map(x -> Dense(x[1]...), shape)...)
```

and then use loadparams!(model, theta),

where I would create `theta`

as

```
theta = mapreduce(x -> [view(parameter_vector, x[1]...),view(parameter_vector, x[2])], vcat, shape)
```

Also, there is `destructure`

and `restructure`

commands, converting model to a vector of parameters and back, so I would take a look on those.

2 Likes

@Tomas_Pevny: I really appreciate your reply. Your solution saved my time… Amazing…

I looked on destructure

```
θ, re = destructure(model);
```

Then I can update model with new weight as

```
re(w)
```

1 Like

Yeah, destructure was written for exactly this use-case.

1 Like