zaterdag 16 februari 2019

Matters that matter III

Het model met een voorgeprepareerde OneHot werkt dus behoorlijk goed met een validation accurracy naar de 60% . Alleen geeft het dus op een gegeven moement ene memory error in verband met de extreem grote X_train file van meer dan 23 gB. Het zou niet uit mogen maken om de OneHot in een layer 'On-the-spot' aan te brengen. Bij de eerste poging heb ik een 'TimeDistributed layer toegevoegd omdat er in eerste instatie complilatie fouten werden gemeld. Maar feitelijk zou dat niet nodig hoeven zijn.   Een nieuwe poging dus maar met de OneHot functie:



Ik verwijder de TimeDistributed layer en na wat debugging blijkt het te werken! En snel ook! Zo'n 23 seconden per epoch met 10K documenten. Dat was bij het model met de geprepareerde data wel anders. Een kleine 200 seconden. Helaas is het resultaat ook veel minder. De validation accuracy komt niet snel veel verder dan 20%. Waar kan dit verschil nou inzitten? Ik vergelijk de beide modellen:

Model met Onehot in de data geprepareerd.

Layer (type)                 Output Shape              Param #
=================================================================
conv1d_9 (Conv1D)            (None, 59, 256)           55612672
_________________________________________________________________
conv1d_10 (Conv1D)           (None, 57, 64)            49216
_________________________________________________________________
max_pooling1d_3 (MaxPooling1 (None, 19, 64)            0
_________________________________________________________________
conv1d_11 (Conv1D)           (None, 17, 128)           24704
_________________________________________________________________
conv1d_12 (Conv1D)           (None, 15, 128)           49280
_________________________________________________________________
global_average_pooling1d_3 ( (None, 128)               0
_________________________________________________________________
dropout_3 (Dropout)          (None, 128)               0
_________________________________________________________________
dense_3 (Dense)              (None, 1919)              247551
=================================================================

Model met Onehot layer

Layer (type)                 Output Shape              Param #
=================================================================
lambda_1 (Lambda)            (None, 64, 36206)         0
_________________________________________________________________
conv1d_1 (Conv1D)            (None, 59, 256)           55612672
_________________________________________________________________
conv1d_2 (Conv1D)            (None, 57, 64)            49216
_________________________________________________________________
max_pooling1d_1 (MaxPooling1 (None, 19, 64)            0
_________________________________________________________________
conv1d_3 (Conv1D)            (None, 17, 128)           24704
_________________________________________________________________
conv1d_4 (Conv1D)            (None, 15, 128)           49280
_________________________________________________________________
global_average_pooling1d_1 ( (None, 128)               0
_________________________________________________________________
dropout_1 (Dropout)          (None, 128)               0
_________________________________________________________________
dense_1 (Dense)              (None, 1919)              247551
=================================================================

Ik zie niet echt een verschil. En toch is het gedrag van beide oplossingen totaal anders.

OneHot functie

OneHot in data
Duidelijk verschil in opbouw dus. Vreemd!



Geen opmerkingen:

Een reactie posten