Files
cryptokitties_genetics/predict_genetics.ipynb
2017-12-09 13:19:04 +08:00

251 KiB
Raw Permalink Blame History

In [28]:
%matplotlib inline
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
import json
from tqdm import tqdm
import os

import datetime
import arrow
import time

Load data

See the scraping notebook for data but sales come from https://kittysales.herokuapp.com, genetics come from data on the etherium contract

Load sales data

In [58]:
sales_data_file = '.cache/sales.json'
sales = json.load(open(sales_data_file))
len(sales)
sales['sales'][0]
Out [58]:
{'blockNumber': 4688676,
 'blocktimeStamp': 1512617298,
 'id': 'log_9357a0df',
 'rank': 1,
 'returnValues': {'0': '18',
  '1': '253336776620370370370',
  '2': '0xA6d3fdf423BbC578dd4d41220078475371626B22'},
 'soldPrice': 115197.04572803818}
In [129]:
# convert to dataframe
df = pd.DataFrame(sales['sales'])

# convert to pandas timestamp
datetimes = df['blocktimeStamp'].apply(datetime.datetime.fromtimestamp)
df['date'] = pd.to_datetime(datetimes)

# grab some of the fields under return values for the dataframe
df2=pd.DataFrame.from_records(df['returnValues'].values)
df2.columns=['kitty_id','price_18eth','address']
df2['price_eth']=df2['price_18eth'].apply(lambda x:float(x)*1e-18)
df2['kitty_id'] = pd.to_numeric(df2['kitty_id'])
for col in ['kitty_id','price_eth']:
    df[col] = df2[col]
    
# rename cols
df['soldPrice'] = df['soldPrice'].rename('soldPrice_USD')
df = df.rename(columns={"soldPrice":"sold_price_usd"})
df.index = df['kitty_id']

# drop uneeded columns
df = df.drop(['id', 'blockNumber', 'rank', 'returnValues', 'blocktimeStamp'], axis=1)
df_sales = df
df_sales
Out [129]:
sold_price_usd date kitty_id price_eth
kitty_id
18 1.151970e+05 2017-12-07 11:28:18 18 2.533368e+02
4 1.123156e+05 2017-12-07 03:41:57 4 2.470000e+02
1 1.144816e+05 2017-12-03 04:32:36 1 2.469255e+02
21 1.080061e+05 2017-12-08 17:31:03 21 2.375228e+02
22 1.023118e+05 2017-12-08 17:34:36 22 2.250000e+02
5 1.016005e+05 2017-12-06 00:45:01 5 2.220000e+02
7 8.767734e+04 2017-12-05 03:45:47 7 1.900468e+02
35 8.500053e+04 2017-12-06 15:18:02 35 1.888897e+02
87 8.142809e+04 2017-12-07 02:11:42 87 1.790734e+02
101 8.199325e+04 2017-12-04 11:28:49 101 1.757532e+02
30 7.792517e+04 2017-12-06 00:28:28 30 1.686849e+02
78 7.349530e+04 2017-12-05 14:49:17 78 1.568700e+02
14 7.048144e+04 2017-12-07 05:59:58 14 1.550000e+02
18 6.930015e+04 2017-12-06 10:37:44 18 1.540000e+02
19 6.930015e+04 2017-12-06 10:19:43 19 1.540000e+02
102 6.982621e+04 2017-12-08 16:18:33 102 1.535590e+02
2 7.016610e+04 2017-12-04 09:16:36 2 1.500000e+02
37 6.772737e+04 2017-12-05 16:14:40 37 1.432795e+02
23 6.293852e+04 2017-12-05 15:07:48 23 1.338756e+02
38 6.033274e+04 2017-12-05 20:59:48 38 1.300000e+02
102 5.991045e+04 2017-12-04 11:43:16 102 1.284185e+02
93 5.671367e+04 2017-12-06 15:26:53 93 1.260301e+02
52 5.657864e+04 2017-12-06 14:01:35 52 1.257300e+02
62 5.203606e+04 2017-12-06 15:23:07 62 1.156354e+02
40 5.229268e+04 2017-12-07 13:51:53 40 1.150000e+02
43 4.501718e+04 2017-12-07 23:51:39 43 9.900000e+01
55 4.461293e+04 2017-12-07 12:20:39 55 9.811100e+01
27 4.335030e+04 2017-12-07 21:27:04 27 9.533427e+01
31 4.450235e+04 2017-12-05 05:47:30 31 9.526291e+01
40 4.251421e+04 2017-12-08 18:02:20 40 9.349556e+01
... ... ... ... ...
3464 4.130450e-01 2017-11-24 13:31:30 3464 1.000000e-03
4391 4.661040e-01 2017-11-25 12:22:40 4391 1.000000e-03
6067 4.601970e-01 2017-11-26 11:11:44 6067 1.000000e-03
3629 4.733770e-01 2017-11-27 11:13:18 3629 1.000000e-03
6112 4.932540e-01 2017-11-27 14:11:17 6112 1.000000e-03
8311 4.803550e-01 2017-11-28 07:53:38 8311 1.000000e-03
8882 4.815180e-01 2017-11-28 14:11:43 8882 1.000000e-03
9110 4.815180e-01 2017-11-28 14:12:43 9110 1.000000e-03
6853 4.886860e-01 2017-11-29 10:00:49 6853 1.000000e-03
9199 4.886860e-01 2017-11-29 10:06:22 9199 1.000000e-03
7946 4.886860e-01 2017-11-29 10:19:55 7946 1.000000e-03
4137 4.842060e-01 2017-11-29 11:12:36 4137 1.000000e-03
8296 4.842060e-01 2017-11-29 11:15:34 8296 1.000000e-03
11172 4.611260e-01 2017-11-30 09:38:46 11172 1.000000e-03
13314 4.342620e-01 2017-11-30 20:23:40 13314 1.000000e-03
13771 4.715570e-01 2017-12-02 05:52:01 13771 1.000000e-03
54364 4.547190e-01 2017-12-07 02:45:38 54364 1.000000e-03
7545 4.471072e-01 2017-12-01 07:20:59 7545 9.999847e-04
113539 1.684144e-02 2017-12-07 22:52:26 113539 3.703704e-05
113534 1.294686e-02 2017-12-07 22:23:15 113534 2.847222e-05
109415 8.947017e-03 2017-12-07 04:45:23 109415 1.967593e-05
86900 7.916684e-03 2017-12-06 11:46:53 86900 1.759259e-05
43283 5.618865e-03 2017-12-06 05:03:29 43283 1.203704e-05
41574 5.365162e-03 2017-12-05 23:11:30 41574 1.157407e-05
30173 4.558781e-03 2017-12-04 07:13:30 30173 9.785880e-06
91591 3.526177e-03 2017-12-07 14:02:35 91591 7.754630e-06
136018 1.539413e-03 2017-12-08 05:03:21 136018 3.385417e-06
127036 3.947214e-04 2017-12-08 00:26:49 127036 8.680556e-07
111960 3.157771e-04 2017-12-08 11:45:07 111960 6.944444e-07
45652 1.023946e-13 2017-12-06 01:29:05 45652 2.220000e-16

78124 rows × 4 columns

Load genetic data

In [109]:
genetics_file = '.cache/genes.json'
genetics = json.load(open(genetics_file))
len(genetics)
Out [109]:
43488
In [496]:
# convert to dataframe
df = pd.DataFrame.from_dict(genetics).T
df.columns=['is_gestating', 'is_ready', 'cooldown_index', 'next_action_at', 'siring_with_id', 'birth_time', 'matron_id', 'sire_id', 'generation', 'genes']
df.index = pd.to_numeric(df.index)
df['generation'] = pd.to_numeric(df['generation'])
df['matron_id'] = pd.to_numeric(df['matron_id'])
df['sire_id'] = pd.to_numeric(df['sire_id'])
df['birth_time'] = pd.to_numeric(df['birth_time'])
df = df.sort_index()
df = df.drop(['is_gestating', 'is_ready', 'cooldown_index', 'next_action_at', 'siring_with_id'], axis=1)
df = df[df.genes!='0'] # remove rows with no genes
df = df[1:] # remove origin kitty
df_genetics = df
df_genetics
Out [496]:
birth_time matron_id sire_id generation genes
1 1511417999 0 0 0 6268376211548016160889809226598771686091543863...
2 1511417999 0 0 0 6233328247424174420738016520205540105237269755...
3 1511417999 0 0 0 5163523354162354170567022901547386224918079227...
4 1511417999 0 0 0 6268375141947334719316716288420757560178523965...
5 1511417999 0 0 0 6233328806923846998926376260807366625937483650...
6 1511417999 0 0 0 4613035485150908523120757036068930199538348135...
7 1511417999 0 0 0 6233277698034429017103950567765524970954426879...
8 1511418008 0 0 0 4559620020693848583707206074171681675830775819...
9 1511418035 0 0 0 6233833779874278041852346338088492342734244547...
10 1511418044 0 0 0 5163523337171367126011753839819537067276020035...
11 1511418044 0 0 0 4611367880921070440157963212743285505842704654...
12 1511418044 0 0 0 4578493054511227949035857584594486760104829763...
13 1511418112 0 0 0 4560159221201941276348499729156645386396250750...
14 1511418116 0 0 0 5129554889428984613286854531398112217255378602...
15 1511418116 0 0 0 4613035452223835287331024509742580987888675330...
16 1511418116 0 0 0 6233833252284378338724434974413836525523562295...
17 1511418116 0 0 0 6269404553147363984118345854639337024260173607...
18 1511418116 0 0 0 4560192904665667822832111046880560033060704840...
19 1511418116 0 0 0 5129049373951532651003023567579923289793462567...
20 1511418149 0 0 0 6269421452513848782205821543180235199856079283...
21 1511418149 0 0 0 6216023906598010121394201352319905816623933883...
22 1511418149 0 0 0 5129538055862746223357733958711974998244902552...
23 1511418239 0 0 0 4613002328763362082249999317894476883917193731...
24 1511418239 0 0 0 6233866409217284196160692456666556233901127417...
25 1511418239 0 0 0 6216073403359021113389331319842603070273775510...
26 1511418239 0 0 0 4611367355436383673714579266113856136150479633...
27 1511418239 0 0 0 5112332628896149655482179525762049643336261414...
28 1511418239 0 0 0 6234945333635884915515939895611296479031266622...
29 1511418239 0 0 0 5111793972432994898422441895738492541345210887...
30 1511418239 0 0 0 5164095758889984122005573356320380613355077493...
... ... ... ... ... ...
45615 1512333845 16747 8707 15 6269453578415381943516255760284043326213056811...
45616 1512333853 16752 14356 16 6274256848369521403290224743805255098953710821...
45617 1512333853 16759 10781 18 6216579413460865674109906598893983985233123945...
45618 1512333853 16779 3129 15 5113411010303687998100933201783764826643580312...
45619 1512333870 16785 26791 7 5163523370084392770969021128124236334163811383...
45620 1512333903 16812 30917 8 1125665612349183931157596564365780411787821413...
45621 1512333941 16838 21772 20 5129015690991404686765294140461041275344784455...
45622 1512333943 16881 22417 9 6233884335447604873748743543094761863725880936...
45623 1512334078 16889 14801 17 4559621634831099400769715992700498680286764411...
45624 1512334078 16906 22726 17 5164063062683703662909948084918540684004499716...
45625 1512334078 17005 40401 18 4576909156825801026091186298516853686702166042...
45626 1512334078 17007 18698 5 5112283131601826856222393066936544803756918176...
45627 1512334078 17014 4026 16 5128997229134311199621080030231934548551440779...
45628 1512334078 17048 11538 2 5130683853628148456670481052173151647647645194...
45629 1512334078 17187 17460 17 5164095741922126726071764639350042066763227222...
45630 1512334078 17189 30399 11 6267785376692115586123185654357364764310432318...
45631 1512334078 17207 21691 11 5112283148576568425285464734611270849724426078...
45632 1512334078 17228 30507 6 6785467971343760798530560564557499310539827456...
45633 1512334078 17231 28310 15 6429545616359495633152585752099073668690663239...
45634 1512334078 17241 18605 19 4611418102266473210778517038652661250506831269...
45635 1512334078 17249 16165 17 5112282587556835590741740255473440867729208112...
45636 1512334078 17250 14644 17 5320430242218365032649964898064686653005504838...
45637 1512334078 17332 11538 2 5129587503499545887800398241586485522317051291...
45638 1512334078 17358 26820 9 6234018569512224369657786035770197463952746524...
45639 1512334078 17397 21492 14 4576874896703348387734864012261754610135465392...
45640 1512334078 17442 22869 5 4611906011319878245491527305060291690203662556...
45641 1512334078 17456 42818 14 6268376743958601894923265566941986372723849946...
45642 1512334088 17495 28301 19 4768274754087843061098657370537325266142097512...
45643 1512334088 17523 17920 12 4559604750943350203969277452538726732270344691...
45644 1512334088 17553 34876 19 5165140456826221028155736310509814307546921341...

43468 rows × 5 columns

Merge & convert genes from int to bits

In [518]:
def genestr_to_bits(x):
    """Gene data is a uint256 string, but I think the genes are it's bytes so lets convert to a bit array"""
    bits = bin(int(x))[2:]
    bitarray = [1 if b=='1' else 0 for b in bits]
    bitarray = (256-len(bitarray))*[0] + bitarray # pad
    return bitarray
In [692]:
# merge and add parent genes
df = pd.merge(df_genetics, df_sales, how='inner', left_index=True, right_index=True)
df

# remove rows where we don't have the parent genetics
mask1 = df['sire_id'].apply(lambda x:int(x) in df_genetics.index)
mask2 = df['matron_id'].apply(lambda x:int(x) in df_genetics.index)
df = df[mask1*mask2]

# remove generation 0
df = df[df['generation']>0]
len(df)

df['sire_genes']=df['sire_id'].apply(lambda x:df_genetics.loc[x].genes).apply(genestr_to_bits)
df['sire_gen']=df['sire_id'].apply(lambda x:df_genetics.loc[x].generation)
df['matron_genes']=df['matron_id'].apply(lambda x:df_genetics.loc[x].genes).apply(genestr_to_bits)
df['matron_gen']=df['matron_id'].apply(lambda x:df_genetics.loc[x].generation)
df['genes']=df['genes'].apply(genestr_to_bits)

df
Out [692]:
/home/wassname/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/pandas/core/computation/expressions.py:183: UserWarning: evaluating in Python space because the '*' operator is not supported by numexpr for the bool dtype, use '&' instead
  unsupported[op_str]))
birth_time matron_id sire_id generation genes sold_price_usd date kitty_id price_eth sire_genes sire_gen matron_genes matron_gen
3005 1511466911 1045 1003 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 75.475318 2017-12-02 05:08:56 3005 0.160056 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3007 1511466918 1044 1006 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 101.317700 2017-12-03 00:22:07 3007 0.220000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3008 1511466918 1097 1099 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5.555534 2017-11-24 08:25:32 3008 0.013552 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3010 1511467040 1041 1058 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 23.645100 2017-11-29 07:17:53 3010 0.050000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3010 1511467040 1041 1058 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 9.974763 2017-11-30 06:41:14 3010 0.022729 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3010 1511467040 1041 1058 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 4.200592 2017-11-24 04:15:04 3010 0.009996 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3011 1511467040 1093 1099 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 6.281243 2017-11-24 06:00:39 3011 0.014819 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3012 1511467189 1046 1087 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 478.842000 2017-12-04 00:15:11 3012 1.000000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3012 1511467189 1046 1087 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 399.712992 2017-12-05 09:53:38 3012 0.856569 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3012 1511467189 1046 1087 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 4.096416 2017-11-24 10:23:41 3012 0.009984 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3013 1511467349 1088 1019 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 231.375440 2017-12-05 00:18:59 3013 0.499733 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3017 1511467461 1078 1056 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 195.708110 2017-12-08 02:05:55 3017 0.430394 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3018 1511467461 1043 3003 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 7.777746 2017-11-24 09:43:28 3018 0.019250 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3018 1511467461 1043 3003 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3.529732 2017-11-25 03:49:18 3018 0.007695 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3020 1511467461 1087 3006 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 124.010446 2017-12-05 03:36:28 3020 0.268801 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3020 1511467461 1087 3006 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 82.108207 2017-12-05 02:59:27 3020 0.177975 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3020 1511467461 1087 3006 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 8.249211 2017-11-24 11:04:56 3020 0.019992 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3021 1511467461 1093 3008 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5.974832 2017-11-25 13:08:18 3021 0.012687 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3022 1511467549 1062 1005 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 46.714600 2017-12-02 13:53:03 3022 0.100000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3024 1511467642 1077 1002 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 598.399623 2017-12-06 01:31:35 3024 1.297431 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3029 1511467718 1053 1010 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 551.445594 2017-12-04 05:27:15 3029 1.200295 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3029 1511467718 1053 1010 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 25.891600 2017-12-02 00:18:55 3029 0.056251 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3029 1511467718 1053 1010 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 18.916080 2017-11-29 07:21:59 3029 0.040000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3030 1511467718 1036 1047 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 4.121639 2017-11-24 11:28:35 3030 0.009989 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3031 1511467718 1098 1017 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 937.400000 2017-12-05 10:11:05 3031 2.000000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3031 1511467718 1098 1017 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 2.289915 2017-11-26 13:20:38 3031 0.005000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3032 1511467718 1054 1004 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 981.295931 2017-12-06 06:53:53 3032 2.180653 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3032 1511467718 1054 1004 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 314.984033 2017-12-06 06:13:25 3032 0.699963 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3032 1511467718 1054 1004 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 7.705208 2017-11-28 21:47:07 3032 0.016276 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
3033 1511467823 1039 1051 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 47.888720 2017-11-29 16:19:38 3033 0.099592 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0
... ... ... ... ... ... ... ... ... ... ... ... ... ...
45592 1512333116 16162 28528 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 15.392169 2017-12-04 07:42:22 45592 0.033041 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16
45594 1512333116 16176 38530 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 12.723501 2017-12-08 00:43:11 45594 0.027981 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16
45597 1512333116 16262 5646 4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 71.372034 2017-12-06 06:00:54 45597 0.158604 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3
45597 1512333116 16262 5646 4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 23.875589 2017-12-07 13:46:57 45597 0.052506 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3
45598 1512333116 16274 27366 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 32.143957 2017-12-04 05:13:35 45598 0.069966 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16
45598 1512333116 16274 27366 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 17.731081 2017-12-06 14:13:00 45598 0.039402 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16
45599 1512333116 16331 6439 14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 26.936386 2017-12-04 13:25:22 45599 0.057391 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 11
45599 1512333116 16331 6439 14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 22.709755 2017-12-05 21:59:24 45599 0.048933 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 11
45599 1512333116 16331 6439 14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13.582793 2017-12-07 06:29:50 45599 0.029871 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 11
45600 1512333116 16364 13561 13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 26.837560 2017-12-06 08:07:35 45600 0.059639 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 12
45601 1512333116 16365 40842 6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 66.577622 2017-12-04 05:07:14 45601 0.144915 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5
45601 1512333116 16365 40842 6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 30.555222 2017-12-07 02:10:26 45601 0.067196 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5
45602 1512333116 16386 19319 20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 111.586185 2017-12-06 11:31:01 45602 0.247969 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 12
45604 1512333394 16392 32070 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 17.635940 2017-12-08 12:44:17 45604 0.038784 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 8
45607 1512333492 25943 13947 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 31.803504 2017-12-05 00:49:27 45607 0.068690 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 15
45609 1512333564 16557 35617 12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 42.137717 2017-12-05 10:21:51 45609 0.089903 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 11
45610 1512333654 16561 30199 21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 26.655555 2017-12-05 22:01:17 45610 0.057435 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 15
45621 1512333941 16838 21772 20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 89.230785 2017-12-04 04:58:55 45621 0.188659 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 14
45622 1512333943 16881 22417 9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 11.356870 2017-12-07 19:04:46 45622 0.024976 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5
45624 1512334078 16906 22726 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 38.217005 2017-12-04 21:52:03 45624 0.082567 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 12
45624 1512334078 16906 22726 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 23.142950 2017-12-04 21:34:21 45624 0.050000 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 12
45628 1512334078 17048 11538 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 163.355168 2017-12-05 16:15:09 45628 0.345583 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1
45629 1512334078 17187 17460 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 32.375588 2017-12-04 16:55:59 45629 0.068417 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 6
45629 1512334078 17187 17460 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 18.923884 2017-12-04 16:07:52 45629 0.039991 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 6
45629 1512334078 17187 17460 17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13.773179 2017-12-04 05:01:55 45629 0.029979 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 6
45630 1512334078 17189 30399 11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 30.228184 2017-12-04 23:06:07 45630 0.064918 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 9
45630 1512334078 17189 30399 11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 20.756527 2017-12-04 17:36:33 45630 0.044004 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 9
45630 1512334078 17189 30399 11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 4.770418 2017-12-04 17:17:38 45630 0.010113 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 9
45631 1512334078 17207 21691 11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 13.970090 2017-12-04 07:33:42 45631 0.029988 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 10
45637 1512334078 17332 11538 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 213.853079 2017-12-06 06:47:25 45637 0.475228 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1

27727 rows × 13 columns

Collect training data

In [674]:
# parent genes
X = np.array([df['sire_genes'], df['matron_genes']])
X = np.transpose(X, (1,2,0))

# child genes
Y = np.stack(df['genes'].values)
X.shape, Y.shape
Out [674]:
((27727, 256, 2), (27727, 256))
In [675]:
# split into test and train, val (& shuffle)
import sklearn.model_selection
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X,Y, random_state=42, test_size=0.1)
X_train.shape, y_train.shape
Out [675]:
((24954, 256, 2), (24954, 256))
In [676]:
# # NOTE: there is ~50% overlap between test and train y values :( because of repeated breeding
# # For now I'll just leave it and try to get an accuracy higher than the overlap

# # check for overlap
# overlaps = []
# for y in tqdm(y_test[:1000]):
#     overlaps.append(((y - y_train)==0).all(-1).sum()>0)
# overlaps = np.array(overlaps)
# print('overlap fraction', overlaps.sum()/len(overlaps))

Baseline performance

How easy is this problem? Lets see how well dummy models do

http://scikit-learn.org/stable/modules/generated/sklearn.dummy.DummyClassifier.html

In [681]:
from sklearn.dummy import DummyClassifier
for strategy in ['stratified', 'prior', 'uniform', 'most_frequent']:
    clf = DummyClassifier(strategy=strategy, random_state=0)
    clf.fit(X_train.reshape((-1,512)), y_train)
    acc = clf.score(X_test.reshape((-1,512)), y_test)
    
    y_pred = clf.predict(X_test.reshape((-1,512)))
    loss = sklearn.metrics.log_loss(y_test, y_pred)
    print(strategy,'loss',loss,'accuracy',acc)
stratified loss 1666.43792773 accuracy 0.0
prior loss 1166.88507952 accuracy 0.0
uniform loss 2205.66894511 accuracy 0.0
most_frequent loss 1166.88507952 accuracy 0.0

Train

In [592]:
import keras
In [595]:
# Simple model with two layers
model = keras.models.Sequential()
model.add(keras.layers.InputLayer((256,2)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(256, activation='elu'))
model.add(keras.layers.Dense(256, activation='sigmoid'))

model.compile(loss='categorical_crossentropy',
              optimizer=keras.optimizers.Adam(lr=1e-3),
              metrics=['accuracy'])
model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_42 (InputLayer)        (None, 256, 2)            0         
_________________________________________________________________
flatten_38 (Flatten)         (None, 512)               0         
_________________________________________________________________
dense_40 (Dense)             (None, 256)               131328    
_________________________________________________________________
dense_41 (Dense)             (None, 256)               65792     
=================================================================
Total params: 197,120
Trainable params: 197,120
Non-trainable params: 0
_________________________________________________________________
In [596]:
history = model.fit(X_train, y_train, validation_split=0.2, epochs=500)
Train on 19963 samples, validate on 4991 samples
Epoch 1/500
19963/19963 [==============================] - 4s - loss: 509.6478 - acc: 0.2359 - val_loss: 505.6140 - val_acc: 0.0950
Epoch 2/500
19963/19963 [==============================] - 4s - loss: 503.6146 - acc: 0.0947 - val_loss: 503.8711 - val_acc: 0.1052
Epoch 3/500
19963/19963 [==============================] - 4s - loss: 502.3385 - acc: 0.1134 - val_loss: 503.3724 - val_acc: 0.2637
Epoch 4/500
19963/19963 [==============================] - 3s - loss: 501.8278 - acc: 0.2307 - val_loss: 503.1031 - val_acc: 0.3264
Epoch 5/500
19963/19963 [==============================] - 3s - loss: 501.5010 - acc: 0.3075 - val_loss: 503.0677 - val_acc: 0.3364
Epoch 6/500
19963/19963 [==============================] - 3s - loss: 501.2706 - acc: 0.3177 - val_loss: 502.9476 - val_acc: 0.3881
Epoch 7/500
19963/19963 [==============================] - 3s - loss: 501.1096 - acc: 0.2912 - val_loss: 502.9000 - val_acc: 0.2176
Epoch 8/500
19963/19963 [==============================] - 4s - loss: 500.9237 - acc: 0.2650 - val_loss: 502.9253 - val_acc: 0.1867
Epoch 9/500
19963/19963 [==============================] - 4s - loss: 500.7793 - acc: 0.2410 - val_loss: 502.9301 - val_acc: 0.2645
Epoch 10/500
19963/19963 [==============================] - 4s - loss: 500.6340 - acc: 0.2070 - val_loss: 502.9690 - val_acc: 0.1268
Epoch 11/500
19963/19963 [==============================] - 4s - loss: 500.5172 - acc: 0.2013 - val_loss: 502.9286 - val_acc: 0.2114
Epoch 12/500
19963/19963 [==============================] - 4s - loss: 500.3877 - acc: 0.1923 - val_loss: 502.9189 - val_acc: 0.2659
Epoch 13/500
19963/19963 [==============================] - 4s - loss: 500.2545 - acc: 0.2060 - val_loss: 503.0023 - val_acc: 0.2589
Epoch 14/500
19963/19963 [==============================] - 4s - loss: 500.1431 - acc: 0.1919 - val_loss: 502.9604 - val_acc: 0.2731
Epoch 15/500
19963/19963 [==============================] - 4s - loss: 500.0178 - acc: 0.1983 - val_loss: 502.9331 - val_acc: 0.2152
Epoch 16/500
19963/19963 [==============================] - 4s - loss: 499.9065 - acc: 0.1946 - val_loss: 503.0404 - val_acc: 0.1399
Epoch 17/500
19963/19963 [==============================] - 4s - loss: 499.7670 - acc: 0.2007 - val_loss: 503.0182 - val_acc: 0.1837
Epoch 18/500
19963/19963 [==============================] - 4s - loss: 499.6611 - acc: 0.1996 - val_loss: 503.0419 - val_acc: 0.2180
Epoch 19/500
19963/19963 [==============================] - 4s - loss: 499.5488 - acc: 0.1936 - val_loss: 503.0547 - val_acc: 0.1356
Epoch 20/500
19963/19963 [==============================] - 4s - loss: 499.4477 - acc: 0.1777 - val_loss: 503.0849 - val_acc: 0.1016
Epoch 21/500
19963/19963 [==============================] - 4s - loss: 499.3326 - acc: 0.1825 - val_loss: 503.1680 - val_acc: 0.1453
Epoch 22/500
19963/19963 [==============================] - 4s - loss: 499.2215 - acc: 0.1853 - val_loss: 503.2883 - val_acc: 0.1907
Epoch 23/500
19963/19963 [==============================] - 4s - loss: 499.1185 - acc: 0.1853 - val_loss: 503.2227 - val_acc: 0.2266
Epoch 24/500
19963/19963 [==============================] - 4s - loss: 499.0264 - acc: 0.1903 - val_loss: 503.2855 - val_acc: 0.1120
Epoch 25/500
19963/19963 [==============================] - 4s - loss: 498.9257 - acc: 0.1727 - val_loss: 503.2961 - val_acc: 0.1348
Epoch 26/500
19963/19963 [==============================] - 4s - loss: 498.8296 - acc: 0.1854 - val_loss: 503.4510 - val_acc: 0.1126
Epoch 27/500
19963/19963 [==============================] - 4s - loss: 498.7325 - acc: 0.1931 - val_loss: 503.4958 - val_acc: 0.2967
Epoch 28/500
19963/19963 [==============================] - 4s - loss: 498.6436 - acc: 0.1994 - val_loss: 503.6021 - val_acc: 0.2166
Epoch 29/500
19963/19963 [==============================] - 4s - loss: 498.5487 - acc: 0.1954 - val_loss: 503.6562 - val_acc: 0.2861
Epoch 30/500
19963/19963 [==============================] - 4s - loss: 498.4737 - acc: 0.2154 - val_loss: 503.6285 - val_acc: 0.2174
Epoch 31/500
19963/19963 [==============================] - 4s - loss: 498.3974 - acc: 0.2214 - val_loss: 503.6386 - val_acc: 0.2565
Epoch 32/500
19963/19963 [==============================] - 4s - loss: 498.3082 - acc: 0.2308 - val_loss: 503.7773 - val_acc: 0.2016
Epoch 33/500
19963/19963 [==============================] - 4s - loss: 498.2250 - acc: 0.2446 - val_loss: 503.8567 - val_acc: 0.2847
Epoch 34/500
19963/19963 [==============================] - 4s - loss: 498.1548 - acc: 0.2580 - val_loss: 503.8739 - val_acc: 0.2448
Epoch 35/500
19963/19963 [==============================] - 4s - loss: 498.0624 - acc: 0.2640 - val_loss: 504.0535 - val_acc: 0.2849
Epoch 36/500
19963/19963 [==============================] - 4s - loss: 497.9936 - acc: 0.2831 - val_loss: 503.9876 - val_acc: 0.3270
Epoch 37/500
19963/19963 [==============================] - 4s - loss: 497.9291 - acc: 0.3028 - val_loss: 503.9642 - val_acc: 0.2663
Epoch 38/500
19963/19963 [==============================] - 4s - loss: 497.8539 - acc: 0.3249 - val_loss: 504.2965 - val_acc: 0.3466
Epoch 39/500
19963/19963 [==============================] - 4s - loss: 497.7858 - acc: 0.3371 - val_loss: 504.2448 - val_acc: 0.3306
Epoch 40/500
19963/19963 [==============================] - 4s - loss: 497.7325 - acc: 0.3455 - val_loss: 504.3414 - val_acc: 0.4392
Epoch 41/500
19963/19963 [==============================] - 4s - loss: 497.6698 - acc: 0.3735 - val_loss: 504.2452 - val_acc: 0.3953
Epoch 42/500
19963/19963 [==============================] - 4s - loss: 497.5922 - acc: 0.3984 - val_loss: 504.4114 - val_acc: 0.4714
Epoch 43/500
19963/19963 [==============================] - 4s - loss: 497.5279 - acc: 0.4100 - val_loss: 504.5356 - val_acc: 0.4210
Epoch 44/500
19963/19963 [==============================] - 4s - loss: 497.4763 - acc: 0.4366 - val_loss: 504.4461 - val_acc: 0.4025
Epoch 45/500
19963/19963 [==============================] - 4s - loss: 497.4147 - acc: 0.4499 - val_loss: 504.6093 - val_acc: 0.3779
Epoch 46/500
19963/19963 [==============================] - 4s - loss: 497.3665 - acc: 0.4681 - val_loss: 504.5588 - val_acc: 0.4562
Epoch 47/500
19963/19963 [==============================] - 4s - loss: 497.3015 - acc: 0.4885 - val_loss: 504.7112 - val_acc: 0.5013
Epoch 48/500
19963/19963 [==============================] - 4s - loss: 497.2564 - acc: 0.4987 - val_loss: 504.8900 - val_acc: 0.4682
Epoch 49/500
19963/19963 [==============================] - 4s - loss: 497.2158 - acc: 0.5140 - val_loss: 504.7040 - val_acc: 0.4073
Epoch 50/500
19963/19963 [==============================] - 4s - loss: 497.1621 - acc: 0.5254 - val_loss: 504.9764 - val_acc: 0.5554
Epoch 51/500
19963/19963 [==============================] - 4s - loss: 497.1012 - acc: 0.5548 - val_loss: 505.1522 - val_acc: 0.5580
Epoch 52/500
19963/19963 [==============================] - 4s - loss: 497.0671 - acc: 0.5633 - val_loss: 505.0681 - val_acc: 0.5223
Epoch 53/500
19963/19963 [==============================] - 4s - loss: 497.0238 - acc: 0.5708 - val_loss: 505.1494 - val_acc: 0.4372
Epoch 54/500
19963/19963 [==============================] - 3s - loss: 496.9774 - acc: 0.5798 - val_loss: 505.1545 - val_acc: 0.6067
Epoch 55/500
19963/19963 [==============================] - 3s - loss: 496.9288 - acc: 0.5975 - val_loss: 505.2224 - val_acc: 0.5837
Epoch 56/500
19963/19963 [==============================] - 3s - loss: 496.8779 - acc: 0.6084 - val_loss: 505.4580 - val_acc: 0.4873
Epoch 57/500
19963/19963 [==============================] - 4s - loss: 496.8303 - acc: 0.6223 - val_loss: 505.2500 - val_acc: 0.6672
Epoch 58/500
19963/19963 [==============================] - 4s - loss: 496.8028 - acc: 0.6384 - val_loss: 505.4695 - val_acc: 0.6117
Epoch 59/500
19963/19963 [==============================] - 3s - loss: 496.7449 - acc: 0.6367 - val_loss: 505.4026 - val_acc: 0.7291
Epoch 60/500
19963/19963 [==============================] - 3s - loss: 496.7252 - acc: 0.6485 - val_loss: 505.3404 - val_acc: 0.6854
Epoch 61/500
19963/19963 [==============================] - 3s - loss: 496.6695 - acc: 0.6537 - val_loss: 505.6919 - val_acc: 0.6754
Epoch 62/500
19963/19963 [==============================] - 4s - loss: 496.6298 - acc: 0.6739 - val_loss: 505.6031 - val_acc: 0.5893
Epoch 63/500
19963/19963 [==============================] - 4s - loss: 496.5867 - acc: 0.6749 - val_loss: 505.6839 - val_acc: 0.6959
Epoch 64/500
19963/19963 [==============================] - 4s - loss: 496.5602 - acc: 0.6896 - val_loss: 505.7272 - val_acc: 0.6295
Epoch 65/500
19963/19963 [==============================] - 4s - loss: 496.5212 - acc: 0.6915 - val_loss: 505.9080 - val_acc: 0.7077
Epoch 66/500
19963/19963 [==============================] - 4s - loss: 496.4646 - acc: 0.7001 - val_loss: 505.9090 - val_acc: 0.6872
Epoch 67/500
19963/19963 [==============================] - 4s - loss: 496.4422 - acc: 0.7116 - val_loss: 506.0468 - val_acc: 0.6922
Epoch 68/500
19963/19963 [==============================] - 4s - loss: 496.4119 - acc: 0.7199 - val_loss: 505.9182 - val_acc: 0.7652
Epoch 69/500
19963/19963 [==============================] - 4s - loss: 496.3752 - acc: 0.7226 - val_loss: 505.8799 - val_acc: 0.6650
Epoch 70/500
19963/19963 [==============================] - 4s - loss: 496.3287 - acc: 0.7313 - val_loss: 506.0791 - val_acc: 0.7381
Epoch 71/500
19963/19963 [==============================] - 4s - loss: 496.2896 - acc: 0.7475 - val_loss: 506.2530 - val_acc: 0.7047
Epoch 72/500
19963/19963 [==============================] - 4s - loss: 496.2791 - acc: 0.7421 - val_loss: 506.3418 - val_acc: 0.7532
Epoch 73/500
19963/19963 [==============================] - 4s - loss: 496.2597 - acc: 0.7520 - val_loss: 506.1495 - val_acc: 0.6776
Epoch 74/500
19963/19963 [==============================] - 4s - loss: 496.2109 - acc: 0.7509 - val_loss: 506.2464 - val_acc: 0.7782
Epoch 75/500
19963/19963 [==============================] - 4s - loss: 496.1969 - acc: 0.7563 - val_loss: 506.3127 - val_acc: 0.7542
Epoch 76/500
19963/19963 [==============================] - 4s - loss: 496.1508 - acc: 0.7721 - val_loss: 506.4001 - val_acc: 0.8010
Epoch 77/500
19963/19963 [==============================] - 4s - loss: 496.1274 - acc: 0.7610 - val_loss: 506.4066 - val_acc: 0.7674
Epoch 78/500
19963/19963 [==============================] - 4s - loss: 496.0915 - acc: 0.7793 - val_loss: 506.6890 - val_acc: 0.8014
Epoch 79/500
19963/19963 [==============================] - 4s - loss: 496.0701 - acc: 0.7838 - val_loss: 506.4873 - val_acc: 0.8235
Epoch 80/500
19963/19963 [==============================] - 4s - loss: 496.0370 - acc: 0.7872 - val_loss: 506.5870 - val_acc: 0.7349
Epoch 81/500
19963/19963 [==============================] - 4s - loss: 496.0149 - acc: 0.7900 - val_loss: 506.7571 - val_acc: 0.7542
Epoch 82/500
19963/19963 [==============================] - 4s - loss: 495.9887 - acc: 0.7949 - val_loss: 506.6772 - val_acc: 0.7956
Epoch 83/500
19963/19963 [==============================] - 4s - loss: 495.9526 - acc: 0.7947 - val_loss: 506.9624 - val_acc: 0.7822
Epoch 84/500
19963/19963 [==============================] - 4s - loss: 495.9517 - acc: 0.7978 - val_loss: 506.7497 - val_acc: 0.8101
Epoch 85/500
19963/19963 [==============================] - 4s - loss: 495.9068 - acc: 0.8045 - val_loss: 506.8190 - val_acc: 0.8171
Epoch 86/500
19963/19963 [==============================] - 4s - loss: 495.8695 - acc: 0.8036 - val_loss: 506.9736 - val_acc: 0.8253
Epoch 87/500
19963/19963 [==============================] - 4s - loss: 495.8618 - acc: 0.8105 - val_loss: 507.1757 - val_acc: 0.7660
Epoch 88/500
19963/19963 [==============================] - 4s - loss: 495.8229 - acc: 0.8107 - val_loss: 506.8222 - val_acc: 0.8042
Epoch 89/500
19963/19963 [==============================] - 4s - loss: 495.8041 - acc: 0.8150 - val_loss: 506.9486 - val_acc: 0.8479
Epoch 90/500
19963/19963 [==============================] - 4s - loss: 495.7913 - acc: 0.8247 - val_loss: 507.3672 - val_acc: 0.8275
Epoch 91/500
19963/19963 [==============================] - 4s - loss: 495.7597 - acc: 0.8239 - val_loss: 506.9244 - val_acc: 0.8509
Epoch 92/500
19963/19963 [==============================] - 4s - loss: 495.7321 - acc: 0.8296 - val_loss: 507.0505 - val_acc: 0.8319
Epoch 93/500
19963/19963 [==============================] - 4s - loss: 495.7026 - acc: 0.8340 - val_loss: 507.1182 - val_acc: 0.8291
Epoch 94/500
19963/19963 [==============================] - 4s - loss: 495.6915 - acc: 0.8330 - val_loss: 507.2960 - val_acc: 0.7906
Epoch 95/500
19963/19963 [==============================] - 4s - loss: 495.6799 - acc: 0.8375 - val_loss: 507.3805 - val_acc: 0.7890
Epoch 96/500
19963/19963 [==============================] - 4s - loss: 495.6380 - acc: 0.8381 - val_loss: 507.5264 - val_acc: 0.8239
Epoch 97/500
19963/19963 [==============================] - 4s - loss: 495.6330 - acc: 0.8362 - val_loss: 507.4712 - val_acc: 0.8425
Epoch 98/500
19963/19963 [==============================] - 4s - loss: 495.5924 - acc: 0.8460 - val_loss: 507.7760 - val_acc: 0.8662
Epoch 99/500
19963/19963 [==============================] - 4s - loss: 495.5892 - acc: 0.8517 - val_loss: 507.5328 - val_acc: 0.8545
Epoch 100/500
19963/19963 [==============================] - 4s - loss: 495.5482 - acc: 0.8501 - val_loss: 507.7463 - val_acc: 0.8591
Epoch 101/500
19963/19963 [==============================] - 4s - loss: 495.5459 - acc: 0.8532 - val_loss: 507.5970 - val_acc: 0.8794
Epoch 102/500
19963/19963 [==============================] - 4s - loss: 495.5041 - acc: 0.8543 - val_loss: 507.7565 - val_acc: 0.8485
Epoch 103/500
19963/19963 [==============================] - 4s - loss: 495.4949 - acc: 0.8554 - val_loss: 507.9597 - val_acc: 0.8539
Epoch 104/500
19963/19963 [==============================] - 4s - loss: 495.4827 - acc: 0.8570 - val_loss: 507.9951 - val_acc: 0.8740
Epoch 105/500
19963/19963 [==============================] - 4s - loss: 495.4498 - acc: 0.8573 - val_loss: 507.9802 - val_acc: 0.7648
Epoch 106/500
19963/19963 [==============================] - 4s - loss: 495.4317 - acc: 0.8588 - val_loss: 507.7718 - val_acc: 0.8688
Epoch 107/500
19963/19963 [==============================] - 4s - loss: 495.4141 - acc: 0.8672 - val_loss: 508.1052 - val_acc: 0.8427
Epoch 108/500
19963/19963 [==============================] - 4s - loss: 495.4020 - acc: 0.8632 - val_loss: 508.1533 - val_acc: 0.8409
Epoch 109/500
19963/19963 [==============================] - 4s - loss: 495.3818 - acc: 0.8669 - val_loss: 508.2390 - val_acc: 0.8654
Epoch 110/500
19963/19963 [==============================] - 4s - loss: 495.3660 - acc: 0.8647 - val_loss: 508.1105 - val_acc: 0.8876
Epoch 111/500
19963/19963 [==============================] - 4s - loss: 495.3293 - acc: 0.8679 - val_loss: 508.4268 - val_acc: 0.8593
Epoch 112/500
19963/19963 [==============================] - 4s - loss: 495.3288 - acc: 0.8737 - val_loss: 508.0949 - val_acc: 0.8405
Epoch 113/500
19963/19963 [==============================] - 4s - loss: 495.2931 - acc: 0.8702 - val_loss: 508.1951 - val_acc: 0.8593
Epoch 114/500
19963/19963 [==============================] - 4s - loss: 495.2874 - acc: 0.8720 - val_loss: 508.2544 - val_acc: 0.8806
Epoch 115/500
19963/19963 [==============================] - 4s - loss: 495.2631 - acc: 0.8737 - val_loss: 507.9510 - val_acc: 0.8978
Epoch 116/500
19963/19963 [==============================] - 4s - loss: 495.2437 - acc: 0.8731 - val_loss: 508.0695 - val_acc: 0.8375
Epoch 117/500
19963/19963 [==============================] - 4s - loss: 495.2461 - acc: 0.8738 - val_loss: 508.4074 - val_acc: 0.8658
Epoch 118/500
19963/19963 [==============================] - 4s - loss: 495.2379 - acc: 0.8734 - val_loss: 508.4292 - val_acc: 0.8463
Epoch 119/500
19963/19963 [==============================] - 4s - loss: 495.2113 - acc: 0.8739 - val_loss: 508.9919 - val_acc: 0.8347
Epoch 120/500
19963/19963 [==============================] - 4s - loss: 495.1892 - acc: 0.8794 - val_loss: 508.5061 - val_acc: 0.8692
Epoch 121/500
19963/19963 [==============================] - 4s - loss: 495.1607 - acc: 0.8852 - val_loss: 508.4319 - val_acc: 0.8597
Epoch 122/500
19963/19963 [==============================] - 4s - loss: 495.1425 - acc: 0.8823 - val_loss: 508.6568 - val_acc: 0.8752
Epoch 123/500
19963/19963 [==============================] - 4s - loss: 495.1186 - acc: 0.8851 - val_loss: 508.7714 - val_acc: 0.8730
Epoch 124/500
19963/19963 [==============================] - 4s - loss: 495.1231 - acc: 0.8882 - val_loss: 508.4651 - val_acc: 0.8978
Epoch 125/500
19963/19963 [==============================] - 4s - loss: 495.1060 - acc: 0.8877 - val_loss: 509.0085 - val_acc: 0.9203
Epoch 126/500
19963/19963 [==============================] - 4s - loss: 495.0852 - acc: 0.8858 - val_loss: 508.9583 - val_acc: 0.8499
Epoch 127/500
19963/19963 [==============================] - 4s - loss: 495.0680 - acc: 0.8819 - val_loss: 508.7727 - val_acc: 0.8784
Epoch 128/500
19963/19963 [==============================] - 4s - loss: 495.0595 - acc: 0.8847 - val_loss: 508.9968 - val_acc: 0.8786
Epoch 129/500
19963/19963 [==============================] - 4s - loss: 495.0271 - acc: 0.8868 - val_loss: 508.9998 - val_acc: 0.8511
Epoch 130/500
19963/19963 [==============================] - 4s - loss: 495.0220 - acc: 0.8853 - val_loss: 509.0853 - val_acc: 0.8804
Epoch 131/500
19963/19963 [==============================] - 4s - loss: 495.0011 - acc: 0.8863 - val_loss: 509.2207 - val_acc: 0.8527
Epoch 132/500
19963/19963 [==============================] - 4s - loss: 495.0155 - acc: 0.8931 - val_loss: 509.0804 - val_acc: 0.8880
Epoch 133/500
19963/19963 [==============================] - 4s - loss: 494.9755 - acc: 0.8913 - val_loss: 509.0576 - val_acc: 0.9038
Epoch 134/500
19963/19963 [==============================] - 4s - loss: 494.9738 - acc: 0.8908 - val_loss: 509.2794 - val_acc: 0.8541
Epoch 135/500
19963/19963 [==============================] - 4s - loss: 494.9564 - acc: 0.8922 - val_loss: 509.6963 - val_acc: 0.8371
Epoch 136/500
19963/19963 [==============================] - 4s - loss: 494.9171 - acc: 0.8952 - val_loss: 509.2114 - val_acc: 0.8966
Epoch 137/500
19963/19963 [==============================] - 4s - loss: 494.9248 - acc: 0.8952 - val_loss: 509.4895 - val_acc: 0.8682
Epoch 138/500
19963/19963 [==============================] - 4s - loss: 494.9100 - acc: 0.8951 - val_loss: 509.4049 - val_acc: 0.8908
Epoch 139/500
19963/19963 [==============================] - 4s - loss: 494.8894 - acc: 0.8993 - val_loss: 509.3632 - val_acc: 0.8724
Epoch 140/500
19963/19963 [==============================] - 4s - loss: 494.8787 - acc: 0.8992 - val_loss: 509.5401 - val_acc: 0.8908
Epoch 141/500
19963/19963 [==============================] - 4s - loss: 494.8604 - acc: 0.8975 - val_loss: 509.8726 - val_acc: 0.9140
Epoch 142/500
19963/19963 [==============================] - 4s - loss: 494.8521 - acc: 0.9044 - val_loss: 509.3432 - val_acc: 0.8830
Epoch 143/500
19963/19963 [==============================] - 4s - loss: 494.8378 - acc: 0.9029 - val_loss: 509.8774 - val_acc: 0.8575
Epoch 144/500
19963/19963 [==============================] - 4s - loss: 494.8332 - acc: 0.9009 - val_loss: 509.9265 - val_acc: 0.8964
Epoch 145/500
19963/19963 [==============================] - 4s - loss: 494.8141 - acc: 0.9026 - val_loss: 509.7003 - val_acc: 0.9118
Epoch 146/500
19963/19963 [==============================] - 4s - loss: 494.8138 - acc: 0.9071 - val_loss: 509.8207 - val_acc: 0.8922
Epoch 147/500
19963/19963 [==============================] - 4s - loss: 494.7802 - acc: 0.9055 - val_loss: 509.6696 - val_acc: 0.8900
Epoch 148/500
19963/19963 [==============================] - 4s - loss: 494.7762 - acc: 0.9023 - val_loss: 509.7778 - val_acc: 0.9209
Epoch 149/500
19963/19963 [==============================] - 4s - loss: 494.7642 - acc: 0.9060 - val_loss: 509.9377 - val_acc: 0.9130
Epoch 150/500
19963/19963 [==============================] - 4s - loss: 494.7440 - acc: 0.9111 - val_loss: 510.2611 - val_acc: 0.8928
Epoch 151/500
19963/19963 [==============================] - 4s - loss: 494.7320 - acc: 0.9066 - val_loss: 509.9017 - val_acc: 0.9225
Epoch 152/500
19963/19963 [==============================] - 4s - loss: 494.7211 - acc: 0.9080 - val_loss: 510.2036 - val_acc: 0.9046
Epoch 153/500
19963/19963 [==============================] - 4s - loss: 494.7028 - acc: 0.9082 - val_loss: 509.9755 - val_acc: 0.9158
Epoch 154/500
19963/19963 [==============================] - 4s - loss: 494.6833 - acc: 0.9098 - val_loss: 509.9168 - val_acc: 0.8872
Epoch 155/500
19963/19963 [==============================] - 4s - loss: 494.6870 - acc: 0.9107 - val_loss: 509.8072 - val_acc: 0.8842
Epoch 156/500
19963/19963 [==============================] - 4s - loss: 494.6775 - acc: 0.9117 - val_loss: 510.2043 - val_acc: 0.9078
Epoch 157/500
19963/19963 [==============================] - 4s - loss: 494.6643 - acc: 0.9099 - val_loss: 510.3874 - val_acc: 0.9054
Epoch 158/500
19963/19963 [==============================] - 4s - loss: 494.6609 - acc: 0.9114 - val_loss: 510.2125 - val_acc: 0.8994
Epoch 159/500
19963/19963 [==============================] - 4s - loss: 494.6342 - acc: 0.9135 - val_loss: 510.7567 - val_acc: 0.8882
Epoch 160/500
19963/19963 [==============================] - 4s - loss: 494.6283 - acc: 0.9123 - val_loss: 510.7425 - val_acc: 0.9044
Epoch 161/500
19963/19963 [==============================] - 4s - loss: 494.6078 - acc: 0.9143 - val_loss: 510.8797 - val_acc: 0.9086
Epoch 162/500
19963/19963 [==============================] - 4s - loss: 494.5912 - acc: 0.9164 - val_loss: 510.6641 - val_acc: 0.9142
Epoch 163/500
19963/19963 [==============================] - 4s - loss: 494.5934 - acc: 0.9154 - val_loss: 510.5877 - val_acc: 0.9060
Epoch 164/500
19963/19963 [==============================] - 4s - loss: 494.5855 - acc: 0.9164 - val_loss: 510.8551 - val_acc: 0.9235
Epoch 165/500
19963/19963 [==============================] - 4s - loss: 494.5503 - acc: 0.9229 - val_loss: 510.7812 - val_acc: 0.9335
Epoch 166/500
19963/19963 [==============================] - 4s - loss: 494.5422 - acc: 0.9226 - val_loss: 510.6672 - val_acc: 0.9183
Epoch 167/500
19963/19963 [==============================] - 4s - loss: 494.5441 - acc: 0.9217 - val_loss: 510.9202 - val_acc: 0.9173
Epoch 168/500
19963/19963 [==============================] - 4s - loss: 494.5300 - acc: 0.9200 - val_loss: 510.8307 - val_acc: 0.8992
Epoch 169/500
19963/19963 [==============================] - 4s - loss: 494.5317 - acc: 0.9216 - val_loss: 510.9512 - val_acc: 0.9297
Epoch 170/500
19963/19963 [==============================] - 4s - loss: 494.5035 - acc: 0.9251 - val_loss: 511.2561 - val_acc: 0.9118
Epoch 171/500
19963/19963 [==============================] - 4s - loss: 494.4820 - acc: 0.9210 - val_loss: 510.9530 - val_acc: 0.9217
Epoch 172/500
19963/19963 [==============================] - 4s - loss: 494.4756 - acc: 0.9248 - val_loss: 510.6623 - val_acc: 0.9088
Epoch 173/500
19963/19963 [==============================] - 4s - loss: 494.4650 - acc: 0.9267 - val_loss: 510.8010 - val_acc: 0.9239
Epoch 174/500
19963/19963 [==============================] - 4s - loss: 494.4804 - acc: 0.9231 - val_loss: 511.1056 - val_acc: 0.9114
Epoch 175/500
19963/19963 [==============================] - 4s - loss: 494.4666 - acc: 0.9227 - val_loss: 511.2407 - val_acc: 0.9337
Epoch 176/500
19963/19963 [==============================] - 4s - loss: 494.4561 - acc: 0.9264 - val_loss: 511.2170 - val_acc: 0.9251
Epoch 177/500
19963/19963 [==============================] - 4s - loss: 494.4301 - acc: 0.9259 - val_loss: 511.1347 - val_acc: 0.9054
Epoch 178/500
19963/19963 [==============================] - 4s - loss: 494.4055 - acc: 0.9239 - val_loss: 511.1440 - val_acc: 0.8962
Epoch 179/500
19963/19963 [==============================] - 4s - loss: 494.4178 - acc: 0.9284 - val_loss: 511.8084 - val_acc: 0.9090
Epoch 180/500
19963/19963 [==============================] - 4s - loss: 494.3943 - acc: 0.9258 - val_loss: 511.4693 - val_acc: 0.9203
Epoch 181/500
19963/19963 [==============================] - 4s - loss: 494.3763 - acc: 0.9291 - val_loss: 511.4683 - val_acc: 0.9179
Epoch 182/500
19963/19963 [==============================] - 4s - loss: 494.3780 - acc: 0.9291 - val_loss: 511.8275 - val_acc: 0.9183
Epoch 183/500
19963/19963 [==============================] - 4s - loss: 494.3834 - acc: 0.9301 - val_loss: 511.3238 - val_acc: 0.9393
Epoch 184/500
19963/19963 [==============================] - 4s - loss: 494.3424 - acc: 0.9300 - val_loss: 512.0930 - val_acc: 0.9217
Epoch 185/500
19963/19963 [==============================] - 4s - loss: 494.3438 - acc: 0.9284 - val_loss: 510.9834 - val_acc: 0.9269
Epoch 186/500
19963/19963 [==============================] - 4s - loss: 494.3195 - acc: 0.9291 - val_loss: 511.9937 - val_acc: 0.9126
Epoch 187/500
19963/19963 [==============================] - 4s - loss: 494.3074 - acc: 0.9290 - val_loss: 511.9741 - val_acc: 0.9074
Epoch 188/500
19963/19963 [==============================] - 4s - loss: 494.3191 - acc: 0.9289 - val_loss: 511.4462 - val_acc: 0.9337
Epoch 189/500
19963/19963 [==============================] - 4s - loss: 494.2997 - acc: 0.9299 - val_loss: 511.5951 - val_acc: 0.9223
Epoch 190/500
19963/19963 [==============================] - 4s - loss: 494.2854 - acc: 0.9302 - val_loss: 511.7262 - val_acc: 0.9253
Epoch 191/500
19963/19963 [==============================] - 4s - loss: 494.2832 - acc: 0.9328 - val_loss: 511.9000 - val_acc: 0.9120
Epoch 192/500
19963/19963 [==============================] - 4s - loss: 494.2785 - acc: 0.9301 - val_loss: 512.1108 - val_acc: 0.9144
Epoch 193/500
19963/19963 [==============================] - 4s - loss: 494.2654 - acc: 0.9324 - val_loss: 511.8300 - val_acc: 0.9269
Epoch 194/500
19963/19963 [==============================] - 4s - loss: 494.2517 - acc: 0.9340 - val_loss: 511.8326 - val_acc: 0.9295
Epoch 195/500
19963/19963 [==============================] - 4s - loss: 494.2496 - acc: 0.9335 - val_loss: 511.6844 - val_acc: 0.9197
Epoch 196/500
19963/19963 [==============================] - 4s - loss: 494.2229 - acc: 0.9326 - val_loss: 511.9269 - val_acc: 0.9245
Epoch 197/500
19963/19963 [==============================] - 4s - loss: 494.2298 - acc: 0.9350 - val_loss: 512.0595 - val_acc: 0.9160
Epoch 198/500
19963/19963 [==============================] - 4s - loss: 494.2225 - acc: 0.9326 - val_loss: 512.3188 - val_acc: 0.9309
Epoch 199/500
19963/19963 [==============================] - 4s - loss: 494.1885 - acc: 0.9357 - val_loss: 512.5320 - val_acc: 0.9255
Epoch 200/500
19963/19963 [==============================] - 4s - loss: 494.1947 - acc: 0.9355 - val_loss: 512.3463 - val_acc: 0.9241
Epoch 201/500
19963/19963 [==============================] - 4s - loss: 494.1628 - acc: 0.9344 - val_loss: 512.0463 - val_acc: 0.9385
Epoch 202/500
19963/19963 [==============================] - 4s - loss: 494.1620 - acc: 0.9349 - val_loss: 512.0062 - val_acc: 0.9291
Epoch 203/500
19963/19963 [==============================] - 4s - loss: 494.1768 - acc: 0.9362 - val_loss: 512.4322 - val_acc: 0.9391
Epoch 204/500
19963/19963 [==============================] - 4s - loss: 494.1721 - acc: 0.9350 - val_loss: 512.4579 - val_acc: 0.9307
Epoch 205/500
19963/19963 [==============================] - 4s - loss: 494.1354 - acc: 0.9362 - val_loss: 512.4993 - val_acc: 0.9257
Epoch 206/500
19963/19963 [==============================] - 4s - loss: 494.1246 - acc: 0.9390 - val_loss: 512.5899 - val_acc: 0.9535
Epoch 207/500
19963/19963 [==============================] - 4s - loss: 494.1312 - acc: 0.9381 - val_loss: 512.6548 - val_acc: 0.9293
Epoch 208/500
19963/19963 [==============================] - 4s - loss: 494.1335 - acc: 0.9390 - val_loss: 512.5760 - val_acc: 0.8958
Epoch 209/500
19963/19963 [==============================] - 4s - loss: 494.1104 - acc: 0.9365 - val_loss: 513.0113 - val_acc: 0.9399
Epoch 210/500
19963/19963 [==============================] - 4s - loss: 494.0968 - acc: 0.9393 - val_loss: 513.2433 - val_acc: 0.9263
Epoch 211/500
19963/19963 [==============================] - 4s - loss: 494.0933 - acc: 0.9395 - val_loss: 512.7495 - val_acc: 0.9281
Epoch 212/500
19963/19963 [==============================] - 4s - loss: 494.1035 - acc: 0.9399 - val_loss: 512.7977 - val_acc: 0.9205
Epoch 213/500
19963/19963 [==============================] - 4s - loss: 494.0760 - acc: 0.9382 - val_loss: 512.5744 - val_acc: 0.9205
Epoch 214/500
19963/19963 [==============================] - 4s - loss: 494.0583 - acc: 0.9380 - val_loss: 512.7637 - val_acc: 0.9423
Epoch 215/500
19963/19963 [==============================] - 4s - loss: 494.0423 - acc: 0.9410 - val_loss: 512.8654 - val_acc: 0.9197
Epoch 216/500
19963/19963 [==============================] - 4s - loss: 494.0524 - acc: 0.9424 - val_loss: 512.8313 - val_acc: 0.9317
Epoch 217/500
19963/19963 [==============================] - 4s - loss: 494.0609 - acc: 0.9409 - val_loss: 513.4910 - val_acc: 0.9090
Epoch 218/500
19963/19963 [==============================] - 4s - loss: 494.0287 - acc: 0.9435 - val_loss: 512.5612 - val_acc: 0.9437
Epoch 219/500
19963/19963 [==============================] - 4s - loss: 494.0340 - acc: 0.9425 - val_loss: 513.4890 - val_acc: 0.9373
Epoch 220/500
19963/19963 [==============================] - 4s - loss: 494.0093 - acc: 0.9421 - val_loss: 513.5374 - val_acc: 0.9301
Epoch 221/500
19963/19963 [==============================] - 4s - loss: 494.0179 - acc: 0.9431 - val_loss: 512.9200 - val_acc: 0.9401
Epoch 222/500
19963/19963 [==============================] - 4s - loss: 493.9808 - acc: 0.9443 - val_loss: 513.4616 - val_acc: 0.9423
Epoch 223/500
19963/19963 [==============================] - 4s - loss: 493.9903 - acc: 0.9446 - val_loss: 513.4754 - val_acc: 0.9333
Epoch 224/500
19963/19963 [==============================] - 4s - loss: 493.9987 - acc: 0.9447 - val_loss: 513.8150 - val_acc: 0.9363
Epoch 225/500
19963/19963 [==============================] - 4s - loss: 493.9723 - acc: 0.9450 - val_loss: 513.1297 - val_acc: 0.9539
Epoch 226/500
19963/19963 [==============================] - 4s - loss: 493.9611 - acc: 0.9433 - val_loss: 513.7288 - val_acc: 0.9411
Epoch 227/500
19963/19963 [==============================] - 4s - loss: 493.9515 - acc: 0.9440 - val_loss: 513.4886 - val_acc: 0.9331
Epoch 228/500
19963/19963 [==============================] - 4s - loss: 493.9436 - acc: 0.9437 - val_loss: 513.0628 - val_acc: 0.9377
Epoch 229/500
19963/19963 [==============================] - 4s - loss: 493.9549 - acc: 0.9464 - val_loss: 513.8014 - val_acc: 0.9435
Epoch 230/500
19963/19963 [==============================] - 4s - loss: 493.9336 - acc: 0.9467 - val_loss: 513.6699 - val_acc: 0.9285
Epoch 231/500
19963/19963 [==============================] - 4s - loss: 493.9257 - acc: 0.9456 - val_loss: 514.0978 - val_acc: 0.9449
Epoch 232/500
19963/19963 [==============================] - 4s - loss: 493.9111 - acc: 0.9447 - val_loss: 513.4519 - val_acc: 0.9381
Epoch 233/500
19963/19963 [==============================] - 4s - loss: 493.8898 - acc: 0.9436 - val_loss: 513.4694 - val_acc: 0.9311
Epoch 234/500
19963/19963 [==============================] - 4s - loss: 493.8833 - acc: 0.9465 - val_loss: 513.9420 - val_acc: 0.9321
Epoch 235/500
19963/19963 [==============================] - 4s - loss: 493.8900 - acc: 0.9471 - val_loss: 513.5383 - val_acc: 0.9387
Epoch 236/500
19963/19963 [==============================] - 4s - loss: 493.8811 - acc: 0.9476 - val_loss: 514.1607 - val_acc: 0.9421
Epoch 237/500
19963/19963 [==============================] - 4s - loss: 493.8919 - acc: 0.9445 - val_loss: 514.2876 - val_acc: 0.9361
Epoch 238/500
19963/19963 [==============================] - 4s - loss: 493.8529 - acc: 0.9440 - val_loss: 513.8998 - val_acc: 0.9311
Epoch 239/500
19963/19963 [==============================] - 4s - loss: 493.8561 - acc: 0.9488 - val_loss: 513.5985 - val_acc: 0.9463
Epoch 240/500
19963/19963 [==============================] - 4s - loss: 493.8504 - acc: 0.9478 - val_loss: 513.8540 - val_acc: 0.9579
Epoch 241/500
19963/19963 [==============================] - 4s - loss: 493.8443 - acc: 0.9468 - val_loss: 513.8317 - val_acc: 0.9475
Epoch 242/500
19963/19963 [==============================] - 4s - loss: 493.8297 - acc: 0.9462 - val_loss: 514.6547 - val_acc: 0.9513
Epoch 243/500
19963/19963 [==============================] - 4s - loss: 493.8303 - acc: 0.9475 - val_loss: 514.4881 - val_acc: 0.9507
Epoch 244/500
19963/19963 [==============================] - 4s - loss: 493.8313 - acc: 0.9481 - val_loss: 514.7005 - val_acc: 0.9519
Epoch 245/500
19963/19963 [==============================] - 4s - loss: 493.8071 - acc: 0.9487 - val_loss: 514.3960 - val_acc: 0.9405
Epoch 246/500
19963/19963 [==============================] - 4s - loss: 493.8041 - acc: 0.9489 - val_loss: 514.0023 - val_acc: 0.9319
Epoch 247/500
19963/19963 [==============================] - 4s - loss: 493.7912 - acc: 0.9510 - val_loss: 514.8714 - val_acc: 0.9495
Epoch 248/500
19963/19963 [==============================] - 4s - loss: 493.8028 - acc: 0.9486 - val_loss: 514.3183 - val_acc: 0.9349
Epoch 249/500
19963/19963 [==============================] - 4s - loss: 493.7943 - acc: 0.9494 - val_loss: 514.6188 - val_acc: 0.9337
Epoch 250/500
19963/19963 [==============================] - 4s - loss: 493.7955 - acc: 0.9485 - val_loss: 514.5264 - val_acc: 0.9413
Epoch 251/500
19963/19963 [==============================] - 4s - loss: 493.7814 - acc: 0.9492 - val_loss: 514.4235 - val_acc: 0.9405
Epoch 252/500
19963/19963 [==============================] - 4s - loss: 493.7353 - acc: 0.9522 - val_loss: 514.3801 - val_acc: 0.9475
Epoch 253/500
19963/19963 [==============================] - 4s - loss: 493.7448 - acc: 0.9470 - val_loss: 514.2343 - val_acc: 0.9331
Epoch 254/500
19963/19963 [==============================] - 4s - loss: 493.7596 - acc: 0.9505 - val_loss: 514.6797 - val_acc: 0.9439
Epoch 255/500
19963/19963 [==============================] - 4s - loss: 493.7345 - acc: 0.9480 - val_loss: 515.0977 - val_acc: 0.9341
Epoch 256/500
19963/19963 [==============================] - 4s - loss: 493.7258 - acc: 0.9479 - val_loss: 514.2398 - val_acc: 0.9397
Epoch 257/500
19963/19963 [==============================] - 4s - loss: 493.7318 - acc: 0.9488 - val_loss: 514.9191 - val_acc: 0.9491
Epoch 258/500
19963/19963 [==============================] - 4s - loss: 493.7321 - acc: 0.9485 - val_loss: 515.0298 - val_acc: 0.9551
Epoch 259/500
19963/19963 [==============================] - 4s - loss: 493.7037 - acc: 0.9482 - val_loss: 514.5596 - val_acc: 0.9469
Epoch 260/500
19963/19963 [==============================] - 4s - loss: 493.6986 - acc: 0.9493 - val_loss: 514.8626 - val_acc: 0.9367
Epoch 261/500
19963/19963 [==============================] - 4s - loss: 493.6958 - acc: 0.9509 - val_loss: 515.1639 - val_acc: 0.9527
Epoch 262/500
19963/19963 [==============================] - 4s - loss: 493.6874 - acc: 0.9494 - val_loss: 515.0715 - val_acc: 0.9551
Epoch 263/500
19963/19963 [==============================] - 4s - loss: 493.6756 - acc: 0.9498 - val_loss: 514.1674 - val_acc: 0.9427
Epoch 264/500
19963/19963 [==============================] - 4s - loss: 493.6773 - acc: 0.9506 - val_loss: 515.0842 - val_acc: 0.9433
Epoch 265/500
19963/19963 [==============================] - 4s - loss: 493.6870 - acc: 0.9511 - val_loss: 515.6192 - val_acc: 0.9289
Epoch 266/500
19963/19963 [==============================] - 4s - loss: 493.6729 - acc: 0.9494 - val_loss: 515.6511 - val_acc: 0.9261
Epoch 267/500
19963/19963 [==============================] - 4s - loss: 493.6542 - acc: 0.9517 - val_loss: 515.4828 - val_acc: 0.9403
Epoch 268/500
19963/19963 [==============================] - 4s - loss: 493.6481 - acc: 0.9521 - val_loss: 515.6330 - val_acc: 0.9275
Epoch 269/500
19963/19963 [==============================] - 4s - loss: 493.6367 - acc: 0.9529 - val_loss: 515.9627 - val_acc: 0.9503
Epoch 270/500
19963/19963 [==============================] - 4s - loss: 493.6380 - acc: 0.9525 - val_loss: 515.7559 - val_acc: 0.9429
Epoch 271/500
19963/19963 [==============================] - 4s - loss: 493.6359 - acc: 0.9530 - val_loss: 515.1681 - val_acc: 0.9555
Epoch 272/500
19963/19963 [==============================] - 4s - loss: 493.6245 - acc: 0.9499 - val_loss: 515.8812 - val_acc: 0.9529
Epoch 273/500
19963/19963 [==============================] - 4s - loss: 493.6090 - acc: 0.9546 - val_loss: 515.5764 - val_acc: 0.9467
Epoch 274/500
19963/19963 [==============================] - 4s - loss: 493.6160 - acc: 0.9533 - val_loss: 515.7477 - val_acc: 0.9461
Epoch 275/500
19963/19963 [==============================] - 4s - loss: 493.6063 - acc: 0.9523 - val_loss: 515.3288 - val_acc: 0.9509
Epoch 276/500
19963/19963 [==============================] - 4s - loss: 493.5916 - acc: 0.9537 - val_loss: 515.5664 - val_acc: 0.9513
Epoch 277/500
19963/19963 [==============================] - 4s - loss: 493.5915 - acc: 0.9542 - val_loss: 516.1525 - val_acc: 0.9535
Epoch 278/500
19963/19963 [==============================] - 4s - loss: 493.5844 - acc: 0.9530 - val_loss: 515.4103 - val_acc: 0.9557
Epoch 279/500
19963/19963 [==============================] - 4s - loss: 493.5705 - acc: 0.9520 - val_loss: 515.9302 - val_acc: 0.9461
Epoch 280/500
19963/19963 [==============================] - 4s - loss: 493.5680 - acc: 0.9539 - val_loss: 515.8831 - val_acc: 0.9497
Epoch 281/500
19963/19963 [==============================] - 4s - loss: 493.5684 - acc: 0.9517 - val_loss: 515.8381 - val_acc: 0.9309
Epoch 282/500
19963/19963 [==============================] - 4s - loss: 493.5525 - acc: 0.9524 - val_loss: 516.3065 - val_acc: 0.9489
Epoch 283/500
19963/19963 [==============================] - 4s - loss: 493.5566 - acc: 0.9530 - val_loss: 516.4894 - val_acc: 0.9487
Epoch 284/500
19963/19963 [==============================] - 4s - loss: 493.5256 - acc: 0.9536 - val_loss: 517.0733 - val_acc: 0.9591
Epoch 285/500
19963/19963 [==============================] - 4s - loss: 493.5413 - acc: 0.9552 - val_loss: 515.8981 - val_acc: 0.9499
Epoch 286/500
19963/19963 [==============================] - 4s - loss: 493.5279 - acc: 0.9537 - val_loss: 515.9369 - val_acc: 0.9625
Epoch 287/500
19963/19963 [==============================] - 4s - loss: 493.5251 - acc: 0.9566 - val_loss: 515.2999 - val_acc: 0.9519
Epoch 288/500
19963/19963 [==============================] - 4s - loss: 493.5078 - acc: 0.9560 - val_loss: 515.9258 - val_acc: 0.9537
Epoch 289/500
19963/19963 [==============================] - 4s - loss: 493.5246 - acc: 0.9547 - val_loss: 515.7352 - val_acc: 0.9621
Epoch 290/500
19963/19963 [==============================] - 4s - loss: 493.5112 - acc: 0.9540 - val_loss: 516.4518 - val_acc: 0.9499
Epoch 291/500
19963/19963 [==============================] - 4s - loss: 493.4941 - acc: 0.9570 - val_loss: 516.4888 - val_acc: 0.9609
Epoch 292/500
19963/19963 [==============================] - 4s - loss: 493.4796 - acc: 0.9532 - val_loss: 516.6315 - val_acc: 0.9503
Epoch 293/500
19963/19963 [==============================] - 4s - loss: 493.4836 - acc: 0.9577 - val_loss: 516.3505 - val_acc: 0.9567
Epoch 294/500
19963/19963 [==============================] - 4s - loss: 493.4852 - acc: 0.9554 - val_loss: 516.0478 - val_acc: 0.9569
Epoch 295/500
19963/19963 [==============================] - 4s - loss: 493.4734 - acc: 0.9552 - val_loss: 516.5111 - val_acc: 0.9585
Epoch 296/500
19963/19963 [==============================] - 4s - loss: 493.4499 - acc: 0.9557 - val_loss: 515.8930 - val_acc: 0.9547
Epoch 297/500
19963/19963 [==============================] - 4s - loss: 493.4714 - acc: 0.9562 - val_loss: 516.2444 - val_acc: 0.9585
Epoch 298/500
19963/19963 [==============================] - 4s - loss: 493.4527 - acc: 0.9550 - val_loss: 517.4130 - val_acc: 0.9437
Epoch 299/500
19963/19963 [==============================] - 4s - loss: 493.4634 - acc: 0.9562 - val_loss: 516.6477 - val_acc: 0.9553
Epoch 300/500
19963/19963 [==============================] - 4s - loss: 493.4438 - acc: 0.9553 - val_loss: 516.2735 - val_acc: 0.9559
Epoch 301/500
19963/19963 [==============================] - 4s - loss: 493.4608 - acc: 0.9550 - val_loss: 516.3542 - val_acc: 0.9523
Epoch 302/500
19963/19963 [==============================] - 4s - loss: 493.4359 - acc: 0.9567 - val_loss: 516.4326 - val_acc: 0.9583
Epoch 303/500
19963/19963 [==============================] - 4s - loss: 493.4179 - acc: 0.9546 - val_loss: 516.1241 - val_acc: 0.9497
Epoch 304/500
19963/19963 [==============================] - 4s - loss: 493.4274 - acc: 0.9550 - val_loss: 517.7369 - val_acc: 0.9427
Epoch 305/500
19963/19963 [==============================] - 4s - loss: 493.4160 - acc: 0.9563 - val_loss: 516.8111 - val_acc: 0.9571
Epoch 306/500
19963/19963 [==============================] - 4s - loss: 493.4076 - acc: 0.9568 - val_loss: 516.4242 - val_acc: 0.9547
Epoch 307/500
19963/19963 [==============================] - 4s - loss: 493.3829 - acc: 0.9559 - val_loss: 516.8223 - val_acc: 0.9595
Epoch 308/500
19963/19963 [==============================] - 4s - loss: 493.4070 - acc: 0.9561 - val_loss: 516.5648 - val_acc: 0.9583
Epoch 309/500
19963/19963 [==============================] - 4s - loss: 493.3681 - acc: 0.9577 - val_loss: 516.8094 - val_acc: 0.9447
Epoch 310/500
19963/19963 [==============================] - 4s - loss: 493.3924 - acc: 0.9562 - val_loss: 517.5253 - val_acc: 0.9625
Epoch 311/500
19963/19963 [==============================] - 4s - loss: 493.3689 - acc: 0.9560 - val_loss: 517.4248 - val_acc: 0.9511
Epoch 312/500
19963/19963 [==============================] - 4s - loss: 493.3694 - acc: 0.9569 - val_loss: 516.7473 - val_acc: 0.9561
Epoch 313/500
19963/19963 [==============================] - 4s - loss: 493.3511 - acc: 0.9560 - val_loss: 517.6065 - val_acc: 0.9479
Epoch 314/500
19963/19963 [==============================] - 4s - loss: 493.3551 - acc: 0.9591 - val_loss: 516.5301 - val_acc: 0.9541
Epoch 315/500
19963/19963 [==============================] - 4s - loss: 493.3529 - acc: 0.9561 - val_loss: 517.5550 - val_acc: 0.9555
Epoch 316/500
19963/19963 [==============================] - 4s - loss: 493.3333 - acc: 0.9569 - val_loss: 518.2606 - val_acc: 0.9469
Epoch 317/500
19963/19963 [==============================] - 4s - loss: 493.3525 - acc: 0.9581 - val_loss: 516.8525 - val_acc: 0.9545
Epoch 318/500
19963/19963 [==============================] - 4s - loss: 493.3532 - acc: 0.9560 - val_loss: 517.1330 - val_acc: 0.9509
Epoch 319/500
19963/19963 [==============================] - 4s - loss: 493.3487 - acc: 0.9573 - val_loss: 517.4108 - val_acc: 0.9389
Epoch 320/500
19963/19963 [==============================] - 4s - loss: 493.3159 - acc: 0.9575 - val_loss: 517.6544 - val_acc: 0.9499
Epoch 321/500
19963/19963 [==============================] - 4s - loss: 493.3206 - acc: 0.9579 - val_loss: 517.5033 - val_acc: 0.9477
Epoch 322/500
19963/19963 [==============================] - 4s - loss: 493.2915 - acc: 0.9588 - val_loss: 518.1011 - val_acc: 0.9593
Epoch 323/500
19963/19963 [==============================] - 4s - loss: 493.3020 - acc: 0.9581 - val_loss: 517.1859 - val_acc: 0.9527
Epoch 324/500
19963/19963 [==============================] - 4s - loss: 493.2971 - acc: 0.9587 - val_loss: 517.7230 - val_acc: 0.9531
Epoch 325/500
19963/19963 [==============================] - 4s - loss: 493.3108 - acc: 0.9583 - val_loss: 517.5614 - val_acc: 0.9571
Epoch 326/500
19963/19963 [==============================] - 4s - loss: 493.2838 - acc: 0.9602 - val_loss: 517.8998 - val_acc: 0.9573
Epoch 327/500
19963/19963 [==============================] - 4s - loss: 493.3117 - acc: 0.9595 - val_loss: 517.8227 - val_acc: 0.9623
Epoch 328/500
19963/19963 [==============================] - 4s - loss: 493.2910 - acc: 0.9586 - val_loss: 517.5640 - val_acc: 0.9567
Epoch 329/500
19963/19963 [==============================] - 4s - loss: 493.2700 - acc: 0.9588 - val_loss: 517.6651 - val_acc: 0.9651
Epoch 330/500
19963/19963 [==============================] - 4s - loss: 493.2673 - acc: 0.9603 - val_loss: 517.6770 - val_acc: 0.9541
Epoch 331/500
19963/19963 [==============================] - 4s - loss: 493.2672 - acc: 0.9587 - val_loss: 518.3985 - val_acc: 0.9551
Epoch 332/500
19963/19963 [==============================] - 4s - loss: 493.2508 - acc: 0.9588 - val_loss: 517.5999 - val_acc: 0.9517
Epoch 333/500
19963/19963 [==============================] - 4s - loss: 493.2355 - acc: 0.9598 - val_loss: 517.2874 - val_acc: 0.9517
Epoch 334/500
19963/19963 [==============================] - 4s - loss: 493.2562 - acc: 0.9599 - val_loss: 517.8885 - val_acc: 0.9559
Epoch 335/500
19963/19963 [==============================] - 4s - loss: 493.2527 - acc: 0.9601 - val_loss: 517.7571 - val_acc: 0.9623
Epoch 336/500
19963/19963 [==============================] - 4s - loss: 493.2429 - acc: 0.9598 - val_loss: 517.5460 - val_acc: 0.9617
Epoch 337/500
19963/19963 [==============================] - 4s - loss: 493.2272 - acc: 0.9616 - val_loss: 518.1440 - val_acc: 0.9573
Epoch 338/500
19963/19963 [==============================] - 4s - loss: 493.2339 - acc: 0.9610 - val_loss: 517.9645 - val_acc: 0.9655
Epoch 339/500
19963/19963 [==============================] - 4s - loss: 493.2229 - acc: 0.9628 - val_loss: 518.5344 - val_acc: 0.9559
Epoch 340/500
19963/19963 [==============================] - 4s - loss: 493.2468 - acc: 0.9624 - val_loss: 517.8453 - val_acc: 0.9623
Epoch 341/500
19963/19963 [==============================] - 4s - loss: 493.1929 - acc: 0.9612 - val_loss: 517.8809 - val_acc: 0.9635
Epoch 342/500
19963/19963 [==============================] - 4s - loss: 493.2012 - acc: 0.9614 - val_loss: 518.1192 - val_acc: 0.9649
Epoch 343/500
19963/19963 [==============================] - 4s - loss: 493.2104 - acc: 0.9613 - val_loss: 518.0911 - val_acc: 0.9567
Epoch 344/500
19963/19963 [==============================] - 4s - loss: 493.1742 - acc: 0.9610 - val_loss: 518.3220 - val_acc: 0.9637
Epoch 345/500
19963/19963 [==============================] - 4s - loss: 493.1951 - acc: 0.9630 - val_loss: 518.3847 - val_acc: 0.9667
Epoch 346/500
19963/19963 [==============================] - 4s - loss: 493.1822 - acc: 0.9611 - val_loss: 519.2944 - val_acc: 0.9603
Epoch 347/500
19963/19963 [==============================] - 4s - loss: 493.1843 - acc: 0.9600 - val_loss: 518.2546 - val_acc: 0.9565
Epoch 348/500
19963/19963 [==============================] - 4s - loss: 493.1722 - acc: 0.9617 - val_loss: 518.4207 - val_acc: 0.9577
Epoch 349/500
19963/19963 [==============================] - 4s - loss: 493.1673 - acc: 0.9603 - val_loss: 518.4414 - val_acc: 0.9619
Epoch 350/500
19963/19963 [==============================] - 4s - loss: 493.1564 - acc: 0.9620 - val_loss: 518.0800 - val_acc: 0.9555
Epoch 351/500
19963/19963 [==============================] - 4s - loss: 493.1728 - acc: 0.9602 - val_loss: 518.5693 - val_acc: 0.9579
Epoch 352/500
19963/19963 [==============================] - 4s - loss: 493.1423 - acc: 0.9619 - val_loss: 519.8097 - val_acc: 0.9511
Epoch 353/500
19963/19963 [==============================] - 4s - loss: 493.1604 - acc: 0.9614 - val_loss: 519.2065 - val_acc: 0.9535
Epoch 354/500
19963/19963 [==============================] - 4s - loss: 493.1419 - acc: 0.9616 - val_loss: 518.6050 - val_acc: 0.9639
Epoch 355/500
19963/19963 [==============================] - 4s - loss: 493.1349 - acc: 0.9627 - val_loss: 519.0150 - val_acc: 0.9617
Epoch 356/500
19963/19963 [==============================] - 4s - loss: 493.1445 - acc: 0.9611 - val_loss: 519.0588 - val_acc: 0.9581
Epoch 357/500
19963/19963 [==============================] - 4s - loss: 493.1316 - acc: 0.9637 - val_loss: 518.0237 - val_acc: 0.9641
Epoch 358/500
19963/19963 [==============================] - 4s - loss: 493.1233 - acc: 0.9621 - val_loss: 519.0910 - val_acc: 0.9611
Epoch 359/500
19963/19963 [==============================] - 4s - loss: 493.1112 - acc: 0.9624 - val_loss: 518.6970 - val_acc: 0.9551
Epoch 360/500
19963/19963 [==============================] - 4s - loss: 493.1054 - acc: 0.9618 - val_loss: 519.2497 - val_acc: 0.9615
Epoch 361/500
19963/19963 [==============================] - 4s - loss: 493.0960 - acc: 0.9629 - val_loss: 518.2046 - val_acc: 0.9599
Epoch 362/500
19963/19963 [==============================] - 4s - loss: 493.1001 - acc: 0.9641 - val_loss: 519.1929 - val_acc: 0.9629
Epoch 363/500
19963/19963 [==============================] - 4s - loss: 493.1127 - acc: 0.9619 - val_loss: 519.1753 - val_acc: 0.9571
Epoch 364/500
19963/19963 [==============================] - 4s - loss: 493.0781 - acc: 0.9640 - val_loss: 519.4361 - val_acc: 0.9537
Epoch 365/500
19963/19963 [==============================] - 4s - loss: 493.0829 - acc: 0.9612 - val_loss: 518.9822 - val_acc: 0.9545
Epoch 366/500
19963/19963 [==============================] - 4s - loss: 493.0743 - acc: 0.9621 - val_loss: 519.2021 - val_acc: 0.9559
Epoch 367/500
19963/19963 [==============================] - 4s - loss: 493.0873 - acc: 0.9627 - val_loss: 518.8594 - val_acc: 0.9633
Epoch 368/500
19963/19963 [==============================] - 4s - loss: 493.0917 - acc: 0.9612 - val_loss: 519.3507 - val_acc: 0.9679
Epoch 369/500
19963/19963 [==============================] - 4s - loss: 493.0565 - acc: 0.9628 - val_loss: 519.6654 - val_acc: 0.9619
Epoch 370/500
19963/19963 [==============================] - 4s - loss: 493.0800 - acc: 0.9632 - val_loss: 518.6537 - val_acc: 0.9513
Epoch 371/500
19963/19963 [==============================] - 4s - loss: 493.0608 - acc: 0.9632 - val_loss: 518.9980 - val_acc: 0.9601
Epoch 372/500
19963/19963 [==============================] - 4s - loss: 493.0509 - acc: 0.9627 - val_loss: 519.6773 - val_acc: 0.9601
Epoch 373/500
19963/19963 [==============================] - 4s - loss: 493.0621 - acc: 0.9632 - val_loss: 519.5024 - val_acc: 0.9635
Epoch 374/500
19963/19963 [==============================] - 4s - loss: 493.0554 - acc: 0.9635 - val_loss: 519.4172 - val_acc: 0.9605
Epoch 375/500
19963/19963 [==============================] - 4s - loss: 493.0354 - acc: 0.9630 - val_loss: 519.8720 - val_acc: 0.9623
Epoch 376/500
19963/19963 [==============================] - 4s - loss: 493.0386 - acc: 0.9631 - val_loss: 519.8483 - val_acc: 0.9593
Epoch 377/500
19963/19963 [==============================] - 4s - loss: 493.0244 - acc: 0.9644 - val_loss: 519.3271 - val_acc: 0.9653
Epoch 378/500
19963/19963 [==============================] - 4s - loss: 493.0449 - acc: 0.9663 - val_loss: 519.2957 - val_acc: 0.9659
Epoch 379/500
19963/19963 [==============================] - 4s - loss: 493.0052 - acc: 0.9649 - val_loss: 519.4381 - val_acc: 0.9671
Epoch 380/500
19963/19963 [==============================] - 4s - loss: 493.0066 - acc: 0.9645 - val_loss: 519.8262 - val_acc: 0.9607
Epoch 381/500
19963/19963 [==============================] - 4s - loss: 493.0130 - acc: 0.9637 - val_loss: 519.1387 - val_acc: 0.9533
Epoch 382/500
19963/19963 [==============================] - 4s - loss: 493.0246 - acc: 0.9626 - val_loss: 520.1953 - val_acc: 0.9659
Epoch 383/500
19963/19963 [==============================] - 4s - loss: 492.9986 - acc: 0.9654 - val_loss: 519.1214 - val_acc: 0.9651
Epoch 384/500
19963/19963 [==============================] - 4s - loss: 492.9961 - acc: 0.9648 - val_loss: 519.6214 - val_acc: 0.9625
Epoch 385/500
19963/19963 [==============================] - 4s - loss: 492.9758 - acc: 0.9648 - val_loss: 520.2041 - val_acc: 0.9579
Epoch 386/500
19963/19963 [==============================] - 4s - loss: 493.0016 - acc: 0.9646 - val_loss: 520.5088 - val_acc: 0.9549
Epoch 387/500
19963/19963 [==============================] - 4s - loss: 492.9880 - acc: 0.9626 - val_loss: 520.1781 - val_acc: 0.9575
Epoch 388/500
19963/19963 [==============================] - 4s - loss: 492.9782 - acc: 0.9644 - val_loss: 520.0854 - val_acc: 0.9657
Epoch 389/500
19963/19963 [==============================] - 4s - loss: 492.9786 - acc: 0.9666 - val_loss: 520.1671 - val_acc: 0.9595
Epoch 390/500
19963/19963 [==============================] - 4s - loss: 492.9702 - acc: 0.9639 - val_loss: 519.9188 - val_acc: 0.9581
Epoch 391/500
19963/19963 [==============================] - 4s - loss: 492.9679 - acc: 0.9647 - val_loss: 520.0878 - val_acc: 0.9555
Epoch 392/500
19963/19963 [==============================] - 4s - loss: 492.9669 - acc: 0.9646 - val_loss: 519.9207 - val_acc: 0.9697
Epoch 393/500
19963/19963 [==============================] - 4s - loss: 492.9442 - acc: 0.9663 - val_loss: 520.3296 - val_acc: 0.9557
Epoch 394/500
19963/19963 [==============================] - 4s - loss: 492.9592 - acc: 0.9663 - val_loss: 519.4713 - val_acc: 0.9665
Epoch 395/500
19963/19963 [==============================] - 4s - loss: 492.9488 - acc: 0.9657 - val_loss: 520.2319 - val_acc: 0.9631
Epoch 396/500
19963/19963 [==============================] - 4s - loss: 492.9536 - acc: 0.9650 - val_loss: 520.2598 - val_acc: 0.9577
Epoch 397/500
19963/19963 [==============================] - 4s - loss: 492.9394 - acc: 0.9651 - val_loss: 519.9015 - val_acc: 0.9675
Epoch 398/500
19963/19963 [==============================] - 4s - loss: 492.9263 - acc: 0.9659 - val_loss: 520.8958 - val_acc: 0.9561
Epoch 399/500
19963/19963 [==============================] - 4s - loss: 492.9520 - acc: 0.9656 - val_loss: 519.7258 - val_acc: 0.9621
Epoch 400/500
19963/19963 [==============================] - 4s - loss: 492.9417 - acc: 0.9642 - val_loss: 520.5040 - val_acc: 0.9621
Epoch 401/500
19963/19963 [==============================] - 4s - loss: 492.9210 - acc: 0.9659 - val_loss: 521.3742 - val_acc: 0.9611
Epoch 402/500
19963/19963 [==============================] - 4s - loss: 492.9143 - acc: 0.9662 - val_loss: 519.5412 - val_acc: 0.9663
Epoch 403/500
19963/19963 [==============================] - 4s - loss: 492.8986 - acc: 0.9663 - val_loss: 519.5819 - val_acc: 0.9683
Epoch 404/500
19963/19963 [==============================] - 4s - loss: 492.8857 - acc: 0.9658 - val_loss: 519.6098 - val_acc: 0.9707
Epoch 405/500
19963/19963 [==============================] - 4s - loss: 492.9039 - acc: 0.9667 - val_loss: 520.1227 - val_acc: 0.9665
Epoch 406/500
19963/19963 [==============================] - 4s - loss: 492.9012 - acc: 0.9677 - val_loss: 520.5466 - val_acc: 0.9603
Epoch 407/500
19963/19963 [==============================] - 4s - loss: 492.8854 - acc: 0.9675 - val_loss: 520.2357 - val_acc: 0.9645
Epoch 408/500
19963/19963 [==============================] - 4s - loss: 492.9059 - acc: 0.9665 - val_loss: 520.1481 - val_acc: 0.9683
Epoch 409/500
19963/19963 [==============================] - 4s - loss: 492.8748 - acc: 0.9675 - val_loss: 520.3279 - val_acc: 0.9575
Epoch 410/500
19963/19963 [==============================] - 4s - loss: 492.8888 - acc: 0.9657 - val_loss: 521.0789 - val_acc: 0.9649
Epoch 411/500
19963/19963 [==============================] - 4s - loss: 492.8651 - acc: 0.9660 - val_loss: 520.5602 - val_acc: 0.9651
Epoch 412/500
19963/19963 [==============================] - 4s - loss: 492.8836 - acc: 0.9653 - val_loss: 520.3040 - val_acc: 0.9571
Epoch 413/500
19963/19963 [==============================] - 4s - loss: 492.8699 - acc: 0.9661 - val_loss: 520.6866 - val_acc: 0.9625
Epoch 414/500
19963/19963 [==============================] - 4s - loss: 492.8969 - acc: 0.9652 - val_loss: 520.2972 - val_acc: 0.9645
Epoch 415/500
19963/19963 [==============================] - 4s - loss: 492.8878 - acc: 0.9658 - val_loss: 521.0742 - val_acc: 0.9615
Epoch 416/500
19963/19963 [==============================] - 4s - loss: 492.8555 - acc: 0.9673 - val_loss: 520.4082 - val_acc: 0.9653
Epoch 417/500
19963/19963 [==============================] - 4s - loss: 492.8856 - acc: 0.9664 - val_loss: 520.9310 - val_acc: 0.9709
Epoch 418/500
19963/19963 [==============================] - 4s - loss: 492.8615 - acc: 0.9668 - val_loss: 520.9935 - val_acc: 0.9631
Epoch 419/500
19963/19963 [==============================] - 4s - loss: 492.8460 - acc: 0.9662 - val_loss: 520.5001 - val_acc: 0.9633
Epoch 420/500
19963/19963 [==============================] - 4s - loss: 492.8443 - acc: 0.9667 - val_loss: 521.3756 - val_acc: 0.9607
Epoch 421/500
19963/19963 [==============================] - 4s - loss: 492.8476 - acc: 0.9648 - val_loss: 522.1200 - val_acc: 0.9633
Epoch 422/500
19963/19963 [==============================] - 4s - loss: 492.8465 - acc: 0.9665 - val_loss: 520.3546 - val_acc: 0.9615
Epoch 423/500
19963/19963 [==============================] - 4s - loss: 492.8388 - acc: 0.9659 - val_loss: 520.3208 - val_acc: 0.9651
Epoch 424/500
19963/19963 [==============================] - 4s - loss: 492.8524 - acc: 0.9650 - val_loss: 521.0591 - val_acc: 0.9675
Epoch 425/500
19963/19963 [==============================] - 4s - loss: 492.8153 - acc: 0.9646 - val_loss: 521.6589 - val_acc: 0.9657
Epoch 426/500
19963/19963 [==============================] - 4s - loss: 492.8244 - acc: 0.9655 - val_loss: 521.4534 - val_acc: 0.9643
Epoch 427/500
19963/19963 [==============================] - 4s - loss: 492.8100 - acc: 0.9667 - val_loss: 520.9625 - val_acc: 0.9637
Epoch 428/500
19963/19963 [==============================] - 4s - loss: 492.8158 - acc: 0.9660 - val_loss: 521.3631 - val_acc: 0.9657
Epoch 429/500
19963/19963 [==============================] - 4s - loss: 492.7940 - acc: 0.9673 - val_loss: 521.3855 - val_acc: 0.9579
Epoch 430/500
19963/19963 [==============================] - 4s - loss: 492.8105 - acc: 0.9680 - val_loss: 521.1384 - val_acc: 0.9579
Epoch 431/500
19963/19963 [==============================] - 4s - loss: 492.7924 - acc: 0.9676 - val_loss: 521.3082 - val_acc: 0.9645
Epoch 432/500
19963/19963 [==============================] - 4s - loss: 492.8049 - acc: 0.9670 - val_loss: 520.9568 - val_acc: 0.9689
Epoch 433/500
19963/19963 [==============================] - 4s - loss: 492.8227 - acc: 0.9676 - val_loss: 520.5832 - val_acc: 0.9647
Epoch 434/500
19963/19963 [==============================] - 4s - loss: 492.7795 - acc: 0.9664 - val_loss: 521.5889 - val_acc: 0.9705
Epoch 435/500
19963/19963 [==============================] - 4s - loss: 492.7713 - acc: 0.9676 - val_loss: 522.3116 - val_acc: 0.9601
Epoch 436/500
19963/19963 [==============================] - 4s - loss: 492.7715 - acc: 0.9680 - val_loss: 521.8315 - val_acc: 0.9645
Epoch 437/500
19963/19963 [==============================] - 4s - loss: 492.7555 - acc: 0.9672 - val_loss: 521.4849 - val_acc: 0.9701
Epoch 438/500
19963/19963 [==============================] - 4s - loss: 492.7608 - acc: 0.9680 - val_loss: 522.6820 - val_acc: 0.9649
Epoch 439/500
19963/19963 [==============================] - 4s - loss: 492.7764 - acc: 0.9690 - val_loss: 522.1751 - val_acc: 0.9641
Epoch 440/500
19963/19963 [==============================] - 4s - loss: 492.7604 - acc: 0.9691 - val_loss: 521.6795 - val_acc: 0.9663
Epoch 441/500
19963/19963 [==============================] - 4s - loss: 492.7596 - acc: 0.9689 - val_loss: 521.3893 - val_acc: 0.9659
Epoch 442/500
19963/19963 [==============================] - 4s - loss: 492.7838 - acc: 0.9677 - val_loss: 521.7740 - val_acc: 0.9615
Epoch 443/500
19963/19963 [==============================] - 4s - loss: 492.7367 - acc: 0.9683 - val_loss: 521.2686 - val_acc: 0.9689
Epoch 444/500
19963/19963 [==============================] - 4s - loss: 492.7491 - acc: 0.9685 - val_loss: 521.5448 - val_acc: 0.9633
Epoch 445/500
19963/19963 [==============================] - 4s - loss: 492.7301 - acc: 0.9679 - val_loss: 520.7187 - val_acc: 0.9689
Epoch 446/500
19963/19963 [==============================] - 4s - loss: 492.7486 - acc: 0.9689 - val_loss: 521.4190 - val_acc: 0.9715
Epoch 447/500
19963/19963 [==============================] - 4s - loss: 492.7361 - acc: 0.9688 - val_loss: 521.9614 - val_acc: 0.9703
Epoch 448/500
19963/19963 [==============================] - 4s - loss: 492.7605 - acc: 0.9686 - val_loss: 523.0642 - val_acc: 0.9697
Epoch 449/500
19963/19963 [==============================] - 4s - loss: 492.7571 - acc: 0.9699 - val_loss: 521.7788 - val_acc: 0.9611
Epoch 450/500
19963/19963 [==============================] - 4s - loss: 492.7147 - acc: 0.9688 - val_loss: 521.6606 - val_acc: 0.9631
Epoch 451/500
19963/19963 [==============================] - 4s - loss: 492.7104 - acc: 0.9694 - val_loss: 521.7470 - val_acc: 0.9685
Epoch 452/500
19963/19963 [==============================] - 4s - loss: 492.7251 - acc: 0.9690 - val_loss: 522.2345 - val_acc: 0.9728
Epoch 453/500
19963/19963 [==============================] - 4s - loss: 492.6935 - acc: 0.9693 - val_loss: 522.9564 - val_acc: 0.9663
Epoch 454/500
19963/19963 [==============================] - 4s - loss: 492.7229 - acc: 0.9700 - val_loss: 521.8866 - val_acc: 0.9717
Epoch 455/500
19963/19963 [==============================] - 4s - loss: 492.7183 - acc: 0.9714 - val_loss: 521.3366 - val_acc: 0.9661
Epoch 456/500
19963/19963 [==============================] - 4s - loss: 492.7180 - acc: 0.9697 - val_loss: 521.5273 - val_acc: 0.9687
Epoch 457/500
19963/19963 [==============================] - 4s - loss: 492.7086 - acc: 0.9677 - val_loss: 522.6364 - val_acc: 0.9609
Epoch 458/500
19963/19963 [==============================] - 4s - loss: 492.7111 - acc: 0.9706 - val_loss: 522.3375 - val_acc: 0.9675
Epoch 459/500
19963/19963 [==============================] - 4s - loss: 492.7032 - acc: 0.9697 - val_loss: 522.8005 - val_acc: 0.9671
Epoch 460/500
19963/19963 [==============================] - 4s - loss: 492.6893 - acc: 0.9685 - val_loss: 522.3066 - val_acc: 0.9661
Epoch 461/500
19963/19963 [==============================] - 4s - loss: 492.6880 - acc: 0.9688 - val_loss: 522.6852 - val_acc: 0.9665
Epoch 462/500
19963/19963 [==============================] - 4s - loss: 492.6817 - acc: 0.9687 - val_loss: 521.9666 - val_acc: 0.9687
Epoch 463/500
19963/19963 [==============================] - 4s - loss: 492.6995 - acc: 0.9691 - val_loss: 522.7354 - val_acc: 0.9663
Epoch 464/500
19963/19963 [==============================] - 4s - loss: 492.6805 - acc: 0.9702 - val_loss: 521.8502 - val_acc: 0.9695
Epoch 465/500
19963/19963 [==============================] - 4s - loss: 492.6601 - acc: 0.9709 - val_loss: 522.4960 - val_acc: 0.9703
Epoch 466/500
19963/19963 [==============================] - 4s - loss: 492.6794 - acc: 0.9710 - val_loss: 522.4973 - val_acc: 0.9653
Epoch 467/500
19963/19963 [==============================] - 4s - loss: 492.6659 - acc: 0.9698 - val_loss: 521.7864 - val_acc: 0.9711
Epoch 468/500
19963/19963 [==============================] - 4s - loss: 492.6674 - acc: 0.9701 - val_loss: 522.8227 - val_acc: 0.9721
Epoch 469/500
19963/19963 [==============================] - 4s - loss: 492.6550 - acc: 0.9711 - val_loss: 522.3789 - val_acc: 0.9705
Epoch 470/500
19963/19963 [==============================] - 4s - loss: 492.6781 - acc: 0.9712 - val_loss: 522.4330 - val_acc: 0.9687
Epoch 471/500
19963/19963 [==============================] - 4s - loss: 492.6779 - acc: 0.9707 - val_loss: 523.5981 - val_acc: 0.9717
Epoch 472/500
19963/19963 [==============================] - 4s - loss: 492.6333 - acc: 0.9711 - val_loss: 522.8292 - val_acc: 0.9705
Epoch 473/500
19963/19963 [==============================] - 4s - loss: 492.6372 - acc: 0.9711 - val_loss: 523.0735 - val_acc: 0.9691
Epoch 474/500
19963/19963 [==============================] - 4s - loss: 492.6338 - acc: 0.9723 - val_loss: 522.8489 - val_acc: 0.9669
Epoch 475/500
19963/19963 [==============================] - 4s - loss: 492.6367 - acc: 0.9718 - val_loss: 522.4099 - val_acc: 0.9717
Epoch 476/500
19963/19963 [==============================] - 4s - loss: 492.6085 - acc: 0.9705 - val_loss: 522.8379 - val_acc: 0.9695
Epoch 477/500
19963/19963 [==============================] - 4s - loss: 492.6392 - acc: 0.9717 - val_loss: 523.2601 - val_acc: 0.9697
Epoch 478/500
19963/19963 [==============================] - 4s - loss: 492.6270 - acc: 0.9707 - val_loss: 523.0826 - val_acc: 0.9607
Epoch 479/500
19963/19963 [==============================] - 4s - loss: 492.6469 - acc: 0.9711 - val_loss: 522.1494 - val_acc: 0.9709
Epoch 480/500
19963/19963 [==============================] - 4s - loss: 492.6032 - acc: 0.9717 - val_loss: 523.0109 - val_acc: 0.9760
Epoch 481/500
19963/19963 [==============================] - 4s - loss: 492.5939 - acc: 0.9733 - val_loss: 523.2088 - val_acc: 0.9695
Epoch 482/500
19963/19963 [==============================] - 4s - loss: 492.6055 - acc: 0.9726 - val_loss: 522.8233 - val_acc: 0.9685
Epoch 483/500
19963/19963 [==============================] - 4s - loss: 492.6285 - acc: 0.9717 - val_loss: 522.0761 - val_acc: 0.9728
Epoch 484/500
19963/19963 [==============================] - 4s - loss: 492.6015 - acc: 0.9723 - val_loss: 522.0767 - val_acc: 0.9705
Epoch 485/500
19963/19963 [==============================] - 4s - loss: 492.5926 - acc: 0.9735 - val_loss: 522.7379 - val_acc: 0.9728
Epoch 486/500
19963/19963 [==============================] - 4s - loss: 492.6344 - acc: 0.9724 - val_loss: 523.4349 - val_acc: 0.9701
Epoch 487/500
19963/19963 [==============================] - 4s - loss: 492.6152 - acc: 0.9713 - val_loss: 522.9709 - val_acc: 0.9717
Epoch 488/500
19963/19963 [==============================] - 4s - loss: 492.5943 - acc: 0.9722 - val_loss: 522.2342 - val_acc: 0.9709
Epoch 489/500
19963/19963 [==============================] - 4s - loss: 492.5984 - acc: 0.9722 - val_loss: 523.0990 - val_acc: 0.9693
Epoch 490/500
19963/19963 [==============================] - 4s - loss: 492.5692 - acc: 0.9723 - val_loss: 523.1680 - val_acc: 0.9687
Epoch 491/500
19963/19963 [==============================] - 4s - loss: 492.5955 - acc: 0.9722 - val_loss: 523.1605 - val_acc: 0.9711
Epoch 492/500
19963/19963 [==============================] - 4s - loss: 492.5674 - acc: 0.9730 - val_loss: 523.5230 - val_acc: 0.9709
Epoch 493/500
19963/19963 [==============================] - 4s - loss: 492.5607 - acc: 0.9719 - val_loss: 522.4805 - val_acc: 0.9705
Epoch 494/500
19963/19963 [==============================] - 4s - loss: 492.5855 - acc: 0.9726 - val_loss: 524.0435 - val_acc: 0.9701
Epoch 495/500
19963/19963 [==============================] - 4s - loss: 492.5620 - acc: 0.9731 - val_loss: 522.9716 - val_acc: 0.9657
Epoch 496/500
19963/19963 [==============================] - 4s - loss: 492.5732 - acc: 0.9718 - val_loss: 523.4193 - val_acc: 0.9697
Epoch 497/500
19963/19963 [==============================] - 4s - loss: 492.5679 - acc: 0.9719 - val_loss: 523.7644 - val_acc: 0.9717
Epoch 498/500
19963/19963 [==============================] - 4s - loss: 492.5677 - acc: 0.9723 - val_loss: 522.9556 - val_acc: 0.9719
Epoch 499/500
19963/19963 [==============================] - 4s - loss: 492.5498 - acc: 0.9729 - val_loss: 522.9463 - val_acc: 0.9738
Epoch 500/500
19963/19963 [==============================] - 4s - loss: 492.5578 - acc: 0.9728 - val_loss: 523.4870 - val_acc: 0.9669
In [600]:
pd.DataFrame(history.history)['acc'].plot()
Out [600]:
<matplotlib.axes._subplots.AxesSubplot at 0x7febf067b710>
In [601]:
metrics = model.evaluate(X_test,y_test)
metrics = dict(zip(model.metrics_names, metrics))
metrics
Out [601]:
2592/2773 [===========================>..] - ETA: 0s
{'acc': 0.96393797331410025, 'loss': 522.92700998696273}

Predict child price

The prices are not normally distributed in linear space. But in log space they are, so lets predict log price.

In [766]:
prices = df['sold_price_usd']
prices = prices[prices<500]
plt.hist(prices, bins=50)
plt.xlabel('$')
plt.xlim(0, 500)
plt.show()

plt.hist(np.log(df['sold_price_usd']), bins=50)
plt.xlabel('log price $')
plt.show()
In [ ]:
In [ ]:
In [843]:
# For predicting price lets uses parent generation, genes, and birth time
# We will normalize them by constants to ~0 to ~1
sire_genes = np.array([df['sire_genes']])[0]
sire_generation = df['sire_gen']/30

matron_genes = np.array([df['matron_genes']])[0]
matron_generation = df['matron_gen']/30

birth_time = df['birth_time']
birth_time = (birth_time - 1511466911)/(233588*3)

hour=df['birth_time'].apply(lambda x:datetime.datetime.fromtimestamp(x).hour)/24
weekday=df['birth_time'].apply(lambda x:datetime.datetime.fromtimestamp(x).weekday())/7

X = np.concatenate([
    sire_genes, 
    sire_generation[:, np.newaxis], 
    matron_genes,
    matron_generation[:, np.newaxis],
    birth_time[:, np.newaxis],
    hour[:, np.newaxis],
    weekday[:, np.newaxis],
    ], 1)

# child genes
use_log_y = True

if use_log_y:
    Y = np.log(np.stack(df['sold_price_usd'].values))
else:
    Y = np.stack(df['sold_price_usd'].values)
X.shape, Y.shape
Out [843]:
((27727, 517), (27727,))
In [ ]:

In [844]:
# split into test and train, val (& shuffle)
import sklearn.model_selection
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X,Y, random_state=42, test_size=0.1)
X_train.shape, y_train.shape
Out [844]:
((24954, 517), (24954,))
In [853]:
from sklearn.dummy import DummyRegressor
import sklearn.metrics
for strategy in ['mean', 'median']:
    clf = DummyRegressor(strategy=strategy)
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    
    if use_log_y:
        mae = sklearn.metrics.mean_absolute_error(np.exp(y_test), np.exp(y_pred))
    else:
        mae = sklearn.metrics.mean_absolute_error(y_test, y_pred)
    print(strategy,'mean absolute error ($)', mae)
mean mean absolute error ($) 28.2072223243
median mean absolute error ($) 28.1958325447
In [ ]:
In [857]:
# Simple model with two layers
model = keras.models.Sequential()
model.add(keras.layers.InputLayer((517,)))
model.add(keras.layers.Dense(128, activation='elu'))
model.add(keras.layers.Dense(64, activation='elu'))
model.add(keras.layers.Dense(32, activation='elu'))
model.add(keras.layers.Dense(16, activation='elu'))
model.add(keras.layers.Dense(1))

model.compile(loss='mae',
              optimizer=keras.optimizers.Adam(lr=1e-4),
              metrics=['accuracy'])
model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_74 (InputLayer)        (None, 517)               0         
_________________________________________________________________
dense_126 (Dense)            (None, 128)               66304     
_________________________________________________________________
dense_127 (Dense)            (None, 64)                8256      
_________________________________________________________________
dense_128 (Dense)            (None, 32)                2080      
_________________________________________________________________
dense_129 (Dense)            (None, 16)                528       
_________________________________________________________________
dense_130 (Dense)            (None, 1)                 17        
=================================================================
Total params: 77,185
Trainable params: 77,185
Non-trainable params: 0
_________________________________________________________________
In [858]:
history = model.fit(X_train, y_train, validation_split=0.2, epochs=100)
Train on 19963 samples, validate on 4991 samples
Epoch 1/100
19963/19963 [==============================] - 3s - loss: 1.0874 - acc: 0.0000e+00 - val_loss: 1.0069 - val_acc: 0.0000e+00
Epoch 2/100
19963/19963 [==============================] - 2s - loss: 1.0223 - acc: 0.0000e+00 - val_loss: 0.9994 - val_acc: 0.0000e+00
Epoch 3/100
19963/19963 [==============================] - 2s - loss: 1.0012 - acc: 0.0000e+00 - val_loss: 0.9899 - val_acc: 0.0000e+00
Epoch 4/100
19963/19963 [==============================] - 2s - loss: 0.9885 - acc: 0.0000e+00 - val_loss: 0.9825 - val_acc: 0.0000e+00
Epoch 5/100
19963/19963 [==============================] - 2s - loss: 0.9736 - acc: 0.0000e+00 - val_loss: 0.9748 - val_acc: 0.0000e+00
Epoch 6/100
19963/19963 [==============================] - 2s - loss: 0.9646 - acc: 0.0000e+00 - val_loss: 0.9937 - val_acc: 0.0000e+00
Epoch 7/100
 4352/19963 [=====>........................] - ETA: 2s - loss: 0.9492 - acc: 0.0000e+00
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-858-f05a8e800ab9> in <module>()
----> 1 history = model.fit(X_train, y_train, validation_split=0.2, epochs=100)

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/keras/models.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)
    868                               class_weight=class_weight,
    869                               sample_weight=sample_weight,
--> 870                               initial_epoch=initial_epoch)
    871 
    872     def evaluate(self, x, y, batch_size=32, verbose=1,

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)
   1505                               val_f=val_f, val_ins=val_ins, shuffle=shuffle,
   1506                               callback_metrics=callback_metrics,
-> 1507                               initial_epoch=initial_epoch)
   1508 
   1509     def evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None):

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/keras/engine/training.py in _fit_loop(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch)
   1154                 batch_logs['size'] = len(batch_ids)
   1155                 callbacks.on_batch_begin(batch_index, batch_logs)
-> 1156                 outs = f(ins_batch)
   1157                 if not isinstance(outs, list):
   1158                     outs = [outs]

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py in __call__(self, inputs)
   2267         updated = session.run(self.outputs + [self.updates_op],
   2268                               feed_dict=feed_dict,
-> 2269                               **self.session_kwargs)
   2270         return updated[:len(self.outputs)]
   2271 

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
    893     try:
    894       result = self._run(None, fetches, feed_dict, options_ptr,
--> 895                          run_metadata_ptr)
    896       if run_metadata:
    897         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
   1122     if final_fetches or final_targets or (handle and feed_dict_tensor):
   1123       results = self._do_run(handle, final_targets, final_fetches,
-> 1124                              feed_dict_tensor, options, run_metadata)
   1125     else:
   1126       results = []

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1319     if handle is None:
   1320       return self._do_call(_run_fn, self._session, feeds, fetches, targets,
-> 1321                            options, run_metadata)
   1322     else:
   1323       return self._do_call(_prun_fn, self._session, handle, feeds, fetches)

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1325   def _do_call(self, fn, *args):
   1326     try:
-> 1327       return fn(*args)
   1328     except errors.OpError as e:
   1329       message = compat.as_text(e.message)

~/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
   1304           return tf_session.TF_Run(session, options,
   1305                                    feed_dict, fetch_list, target_list,
-> 1306                                    status, run_metadata)
   1307 
   1308     def _prun_fn(session, handle, feed_dict, fetch_list):

KeyboardInterrupt: 
In [ ]:
pd.DataFrame(history.history)['acc'].plot()
In [ ]:
In [859]:
metrics = model.evaluate(X_test,y_test)
metrics = dict(zip(model.metrics_names, metrics))
metrics
Out [859]:
2304/2773 [=======================>......] - ETA: 0s
{'acc': 0.0, 'loss': 0.95822394375675557}
In [860]:
# I got ~26 which is not great
y_pred = model.predict(X_test)
mae = sklearn.metrics.mean_absolute_error(np.exp(y_test), np.exp(y_pred))
mae
Out [860]:
26.219251685788045
In [ ]: