Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Lucas Miranda
deepOF
Commits
203fe2f0
Commit
203fe2f0
authored
May 27, 2020
by
lucas_miranda
Browse files
Added He initialization to Conv1D and Dense layers in models.py
parent
c15ecaf1
Changes
2
Hide whitespace changes
Inline
Side-by-side
main.ipynb
View file @
203fe2f0
...
...
@@ -303,7 +303,7 @@
"metadata": {},
"outputs": [],
"source": [
"NAME = 'Baseline_
V
AE_
Inverted
'\n",
"NAME = 'Baseline_AE_
orthogonal_init
'\n",
"log_dir = os.path.abspath(\n",
" \"logs/fit/{}_{}\".format(NAME, datetime.now().strftime(\"%Y%m%d-%H%M%S\"))\n",
")\n",
...
...
@@ -325,7 +325,7 @@
"metadata": {},
"outputs": [],
"source": [
"
#
encoder, decoder, ae = SEQ_2_SEQ_AE(pttest.shape).build()"
"encoder, decoder, ae = SEQ_2_SEQ_AE(pttest.shape).build()"
]
},
{
...
...
@@ -334,7 +334,7 @@
"metadata": {},
"outputs": [],
"source": [
"encoder, generator, vae = SEQ_2_SEQ_VAE(pttest.shape).build()"
"
#
encoder, generator, vae = SEQ_2_SEQ_VAE(pttest.shape).build()"
]
},
{
...
...
@@ -378,7 +378,7 @@
"outputs": [],
"source": [
"tf.config.experimental_run_functions_eagerly(False)\n",
"history =
v
ae.fit(pttrain, pttrain
[:,::-1,:]
, epochs=50, batch_size=256, verbose=1, validation_data=(pttest, pttest
[:,::-1,:]
),\n",
"history = ae.fit(pttrain, pttrain, epochs=50, batch_size=256, verbose=1, validation_data=(pttest, pttest),\n",
" callbacks=[tensorboard_callback])"
]
},
...
...
%% Cell type:code id: tags:
```
python
%
load_ext
autoreload
%
autoreload
2
import
warnings
warnings
.
filterwarnings
(
"ignore"
)
```
%% Cell type:code id: tags:
```
python
#from source.utils import *
from
source.preprocess
import
*
import
pickle
import
matplotlib.pyplot
as
plt
import
pandas
as
pd
from
collections
import
defaultdict
from
tqdm
import
tqdm_notebook
as
tqdm
```
%% Cell type:code id: tags:parameters
```
python
path
=
"../../Desktop/DLC_social_1/"
```
%% Cell type:markdown id: tags:
# Set up and design the project
%% Cell type:code id: tags:
```
python
with
open
(
'{}DLC_social_1_exp_conditions.pickle'
.
format
(
path
),
'rb'
)
as
handle
:
Treatment_dict
=
pickle
.
load
(
handle
)
```
%% Cell type:code id: tags:
```
python
#Which angles to compute?
bp_dict
=
{
'B_Nose'
:[
'B_Left_ear'
,
'B_Right_ear'
],
'B_Left_ear'
:[
'B_Nose'
,
'B_Right_ear'
,
'B_Center'
,
'B_Left_flank'
],
'B_Right_ear'
:[
'B_Nose'
,
'B_Left_ear'
,
'B_Center'
,
'B_Right_flank'
],
'B_Center'
:[
'B_Left_ear'
,
'B_Right_ear'
,
'B_Left_flank'
,
'B_Right_flank'
,
'B_Tail_base'
],
'B_Left_flank'
:[
'B_Left_ear'
,
'B_Center'
,
'B_Tail_base'
],
'B_Right_flank'
:[
'B_Right_ear'
,
'B_Center'
,
'B_Tail_base'
],
'B_Tail_base'
:[
'B_Center'
,
'B_Left_flank'
,
'B_Right_flank'
]}
```
%% Cell type:code id: tags:
```
python
%%
time
DLC_social_1
=
project
(
path
=
path
,
#Path where to find the required files
smooth_alpha
=
0.85
,
#Alpha value for exponentially weighted smoothing
distances
=
[
'B_Center'
,
'B_Nose'
,
'B_Left_ear'
,
'B_Right_ear'
,
'B_Left_flank'
,
'B_Right_flank'
,
'B_Tail_base'
],
ego
=
False
,
angles
=
True
,
connectivity
=
bp_dict
,
arena
=
'circular'
,
#Type of arena used in the experiments
arena_dims
=
[
380
],
#Dimensions of the arena. Just one if it's circular
video_format
=
'.mp4'
,
table_format
=
'.h5'
,
exp_conditions
=
Treatment_dict
)
```
%% Cell type:markdown id: tags:
# Run project
%% Cell type:code id: tags:
```
python
%%
time
DLC_social_1_coords
=
DLC_social_1
.
run
(
verbose
=
True
)
print
(
DLC_social_1_coords
)
type
(
DLC_social_1_coords
)
```
%% Cell type:markdown id: tags:
# Generate coords
%% Cell type:code id: tags:
```
python
%%
time
ptest
=
DLC_social_1_coords
.
get_coords
(
center
=
True
,
polar
=
False
,
speed
=
0
,
length
=
'00:10:00'
)
ptest
.
_type
```
%% Cell type:code id: tags:
```
python
%%
time
dtest
=
DLC_social_1_coords
.
get_distances
(
speed
=
0
,
length
=
'00:10:00'
)
dtest
.
_type
```
%% Cell type:code id: tags:
```
python
%%
time
atest
=
DLC_social_1_coords
.
get_angles
(
degrees
=
True
,
speed
=
0
,
length
=
'00:10:00'
)
atest
.
_type
```
%% Cell type:markdown id: tags:
# Visualization playground
%% Cell type:code id: tags:
```
python
#ptest.plot_heatmaps(['B_Center', 'W_Center'], i=1)
```
%% Cell type:code id: tags:
```
python
#Plot animation of trajectory over time with different smoothings
#plt.plot(ptest['Day2Test13DLC']['B_Center'].iloc[:5000]['x'],
# ptest['Day2Test13DLC']['B_Center'].iloc[:5000]['y'], label='alpha=0.85')
#plt.xlabel('x')
#plt.ylabel('y')
#plt.title('Mouse Center Trajectory using different exponential smoothings')
#plt.legend()
#plt.show()
```
%% Cell type:markdown id: tags:
# Dimensionality reduction playground
%% Cell type:code id: tags:
```
python
#pca = ptest.pca(4, 1000)
```
%% Cell type:code id: tags:
```
python
#plt.scatter(*pca[0].T)
#plt.show()
```
%% Cell type:markdown id: tags:
# Preprocessing playground
%% Cell type:code id: tags:
```
python
mtest
=
merge_tables
(
DLC_social_1_coords
.
get_coords
(
center
=
True
,
polar
=
True
,
length
=
'00:10:00'
))
#,
# DLC_social_1_coords.get_distances(speed=0, length='00:10:00'),
# DLC_social_1_coords.get_angles(degrees=True, speed=0, length='00:10:00'))
```
%% Cell type:code id: tags:
```
python
#pptest = mtest.preprocess(window_size=51, filter='gaussian', sigma=10, shift=20)
```
%% Cell type:code id: tags:
```
python
pttest
=
mtest
.
preprocess
(
window_size
=
51
,
window_step
=
10
,
filter
=
None
)
pttest
.
shape
```
%% Cell type:code id: tags:
```
python
#plt.plot(pttest[2,:,2], label='normal')
#plt.plot(pptest[2,:,2], label='gaussian')
#plt.legend()
#plt.show()
```
%% Cell type:markdown id: tags:
# Trained models playground
%% Cell type:markdown id: tags:
### Seq 2 seq Variational Auto Encoder
%% Cell type:code id: tags:
```
python
from
datetime
import
datetime
from
tensorflow.keras
import
Input
,
Model
,
Sequential
from
tensorflow.keras.constraints
import
UnitNorm
from
tensorflow.keras.layers
import
Bidirectional
,
Dense
,
Dropout
from
tensorflow.keras.layers
import
Lambda
,
LSTM
from
tensorflow.keras.layers
import
RepeatVector
,
TimeDistributed
from
tensorflow.keras.losses
import
Huber
from
tensorflow.keras.optimizers
import
Adam
from
source.model_utils
import
*
import
keras
as
k
import
tensorflow
as
tf
```
%% Cell type:code id: tags:
```
python
NAME
=
'Baseline_
V
AE_
Inverted
'
NAME
=
'Baseline_AE_
orthogonal_init
'
log_dir
=
os
.
path
.
abspath
(
"logs/fit/{}_{}"
.
format
(
NAME
,
datetime
.
now
().
strftime
(
"%Y%m%d-%H%M%S"
))
)
tensorboard_callback
=
k
.
callbacks
.
TensorBoard
(
log_dir
=
log_dir
,
histogram_freq
=
1
)
```
%% Cell type:code id: tags:
```
python
from
source.models
import
SEQ_2_SEQ_AE
,
SEQ_2_SEQ_VAE
```
%% Cell type:code id: tags:
```
python
#
encoder, decoder, ae = SEQ_2_SEQ_AE(pttest.shape).build()
encoder
,
decoder
,
ae
=
SEQ_2_SEQ_AE
(
pttest
.
shape
).
build
()
```
%% Cell type:code id: tags:
```
python
encoder
,
generator
,
vae
=
SEQ_2_SEQ_VAE
(
pttest
.
shape
).
build
()
#
encoder, generator, vae = SEQ_2_SEQ_VAE(pttest.shape).build()
```
%% Cell type:code id: tags:
```
python
#ae.summary()
#vae.summary()
```
%% Cell type:code id: tags:
```
python
#from tensorflow.keras.utils import plot_model
#plot_model(encoder)
```
%% Cell type:code id: tags:
```
python
#Shuffle to check if ordered sequence makes it harder
#for the model in the validation set!
pttrain
=
pttest
[:
-
1500
]
pttest
=
pttest
[
-
1500
:]
```
%% Cell type:code id: tags:
```
python
tf
.
config
.
experimental_run_functions_eagerly
(
False
)
history
=
v
ae
.
fit
(
pttrain
,
pttrain
[:,::
-
1
,:]
,
epochs
=
50
,
batch_size
=
256
,
verbose
=
1
,
validation_data
=
(
pttest
,
pttest
[:,::
-
1
,:]
),
history
=
ae
.
fit
(
pttrain
,
pttrain
,
epochs
=
50
,
batch_size
=
256
,
verbose
=
1
,
validation_data
=
(
pttest
,
pttest
),
callbacks
=
[
tensorboard_callback
])
```
%% Cell type:code id: tags:
```
python
``
`
%%
Cell
type
:
code
id
:
tags
:
```
python
```
...
...
source/models.py
View file @
203fe2f0
...
...
@@ -2,7 +2,7 @@
from
tensorflow.keras
import
Input
,
Model
,
Sequential
from
tensorflow.keras.constraints
import
UnitNorm
from
tensorflow.keras.initializers
import
he_uniform
from
tensorflow.keras.initializers
import
he_uniform
,
Orthogonal
from
tensorflow.keras.layers
import
BatchNormalization
,
Bidirectional
,
Dense
from
tensorflow.keras.layers
import
Dropout
,
Lambda
,
LSTM
from
tensorflow.keras.layers
import
RepeatVector
,
TimeDistributed
...
...
@@ -77,7 +77,7 @@ class SEQ_2_SEQ_AE:
activation
=
"relu"
,
kernel_constraint
=
UnitNorm
(
axis
=
1
),
activity_regularizer
=
UncorrelatedFeaturesConstraint
(
3
,
weightage
=
1.0
),
kernel_initializer
=
he_uniform
(),
kernel_initializer
=
Orthogonal
(),
)
# Decoder layers
...
...
@@ -223,7 +223,7 @@ class SEQ_2_SEQ_VAE:
activation
=
"relu"
,
kernel_constraint
=
UnitNorm
(
axis
=
1
),
activity_regularizer
=
UncorrelatedFeaturesConstraint
(
3
,
weightage
=
1.0
),
kernel_initializer
=
he_uniform
(),
kernel_initializer
=
Orthogonal
(),
)
# Decoder layers
...
...
@@ -347,11 +347,11 @@ class SEQ_2_SEQ_MMVAE:
# - orthogonal/non-orthogonal weights (done!)
# - Unit Norm constraint (done!)
# - add batch normalization (done! -> added to baseline)
# - add He initialization (done!)
# - try reverse sequence as output!
# - add He initialization (done! -> added to baseline)
# - try reverse sequence as output! (done!)
# - try orthonotmal initialization in encoding layer
# - add linear Dense in the end
# - add another dropout
# - try orthonotmal initialization in encoding layer
# TODO next:
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment