save 2
This commit is contained in:
parent
1caca1b0a8
commit
d93925d196
226
test.py
226
test.py
@ -1,67 +1,191 @@
|
|||||||
import tensorflow as tf
|
import tensorflow as tf
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
from tensorflow import keras as k
|
||||||
from tensorflow.keras import layers as kl
|
from tensorflow.keras import layers as kl
|
||||||
from tensorflow.keras import models as km
|
from tensorflow.keras import models as km
|
||||||
from tensorflow.keras import optimizers as ko
|
from tensorflow.keras import optimizers as ko
|
||||||
|
|
||||||
|
CONV_SIZE = 128
|
||||||
|
MPPT_SIZE = 1024
|
||||||
|
DRPT_RATE = 0.3
|
||||||
|
TOUT_AMNT = 2
|
||||||
|
|
||||||
|
def conv(i, n, s, t = (1, 1)):
|
||||||
|
c = kl.Conv2D(n, s, padding = 'same', strides = t)(i)
|
||||||
|
b = kl.BatchNormalization()(c)
|
||||||
|
return kl.Activation('relu')(b)
|
||||||
|
|
||||||
|
def avg(i, s):
|
||||||
|
return kl.AveragePooling2D(s, padding = 'same')(i)
|
||||||
|
|
||||||
|
def max(i, s):
|
||||||
|
return kl.MaxPooling2D(s, padding = 'same')(i)
|
||||||
|
|
||||||
|
def generate_start(i):
|
||||||
|
r1 = conv(i, CONV_SIZE, (3, 3))
|
||||||
|
r2 = conv(r1, CONV_SIZE, (3, 3))
|
||||||
|
r3 = conv(r2, CONV_SIZE, (3, 3))
|
||||||
|
|
||||||
|
m1 = kl.MaxPooling2D((3, 3))(r3)
|
||||||
|
|
||||||
|
r4 = conv(m1, CONV_SIZE, (1, 1))
|
||||||
|
r5 = conv(r4, CONV_SIZE, (3, 3))
|
||||||
|
|
||||||
|
return kl.MaxPooling2D((3, 3))(r5)
|
||||||
|
|
||||||
|
def generate_type_a(i):
|
||||||
|
a11 = conv(i, CONV_SIZE, (1, 1), (3, 3))
|
||||||
|
|
||||||
|
a21 = avg(i, (3, 3))
|
||||||
|
a22 = conv(a21, CONV_SIZE, (1, 1))
|
||||||
|
|
||||||
|
a31 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
a32 = conv(a31, CONV_SIZE, (3, 3), (3, 3))
|
||||||
|
|
||||||
|
a41 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
a42 = conv(a41, CONV_SIZE, (3, 3))
|
||||||
|
a43 = conv(a42, CONV_SIZE, (3, 3), (3, 3))
|
||||||
|
|
||||||
|
return kl.Concatenate()([a11, a22, a32, a43])
|
||||||
|
|
||||||
|
def generate_ab_bridge(i):
|
||||||
|
ab11 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
ab12 = conv(ab11, CONV_SIZE, (3, 3))
|
||||||
|
ab13 = conv(ab12, CONV_SIZE, (3, 3), (3, 3))
|
||||||
|
|
||||||
|
ab21 = conv(i, CONV_SIZE, (3, 3), (3, 3))
|
||||||
|
|
||||||
|
ab31 = max(i, (3, 3))
|
||||||
|
|
||||||
|
return kl.Concatenate()([ab13, ab21, ab31])
|
||||||
|
|
||||||
|
def generate_type_b(i):
|
||||||
|
b11 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
b12 = conv(b11, CONV_SIZE, (7, 1))
|
||||||
|
b13 = conv(b12, CONV_SIZE, (1, 7))
|
||||||
|
b14 = conv(b13, CONV_SIZE, (7, 1))
|
||||||
|
b15 = conv(b14, CONV_SIZE, (1, 7), (3, 3))
|
||||||
|
|
||||||
|
b21 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
b22 = conv(b21, CONV_SIZE, (1, 7))
|
||||||
|
b23 = conv(b22, CONV_SIZE, (7, 1), (3, 3))
|
||||||
|
|
||||||
|
b31 = conv(i, CONV_SIZE, (1, 1), (3, 3))
|
||||||
|
|
||||||
|
b41 = avg(i, (3, 3))
|
||||||
|
b42 = conv(b41, CONV_SIZE, (1, 1))
|
||||||
|
|
||||||
|
return kl.Concatenate()([b15, b23, b31, b42])
|
||||||
|
|
||||||
|
def generate_bc_bridge(i):
|
||||||
|
bc11 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
bc12 = conv(bc11, CONV_SIZE, (7, 1))
|
||||||
|
bc13 = conv(bc12, CONV_SIZE, (1, 7))
|
||||||
|
bc14 = conv(bc13, CONV_SIZE, (3, 3), (3, 3))
|
||||||
|
|
||||||
|
bc21 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
bc22 = conv(bc21, CONV_SIZE, (1, 1), (3, 3))
|
||||||
|
|
||||||
|
bc31 = max(i, (3, 3))
|
||||||
|
|
||||||
|
return kl.Concatenate()([bc14, bc22, bc31])
|
||||||
|
|
||||||
|
def generate_aux(i):
|
||||||
|
u1 = kl.AveragePooling2D((5, 5))(i)
|
||||||
|
u2 = conv(u1, CONV_SIZE, (1, 1))
|
||||||
|
u3 = kl.Flatten()(u2)
|
||||||
|
u4 = kl.Dropout(DRPT_RATE)(u3)
|
||||||
|
u5 = kl.Dense(MPPT_SIZE)(u4)
|
||||||
|
|
||||||
|
return kl.Dense(TOUT_AMNT)(u5)
|
||||||
|
|
||||||
|
def generate_type_c(i):
|
||||||
|
c11 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
c12 = conv(c11, CONV_SIZE, (3, 3))
|
||||||
|
c13 = conv(c12, CONV_SIZE, (1, 3), (3, 3))
|
||||||
|
c14 = conv(c12, CONV_SIZE, (3, 1), (3, 3))
|
||||||
|
|
||||||
|
c21 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
c22 = conv(c21, CONV_SIZE, (1, 3), (3, 3))
|
||||||
|
c23 = conv(c21, CONV_SIZE, (3, 1), (3, 3))
|
||||||
|
|
||||||
|
c31 = max(i, (3, 3))
|
||||||
|
c32 = conv(c31, CONV_SIZE, (1, 1))
|
||||||
|
|
||||||
|
c41 = conv(i, CONV_SIZE, (1, 1))
|
||||||
|
|
||||||
|
return kl.Concatenate()([c14, c23, c32, c41])
|
||||||
|
|
||||||
|
def generate_finish(i):
|
||||||
|
f1 = kl.AveragePooling2D((5, 5))(i)
|
||||||
|
f2 = conv(f1, CONV_SIZE, (1, 1))
|
||||||
|
f3 = kl.Flatten()(f2)
|
||||||
|
f4 = kl.Dropout(DRPT_RATE)(f3)
|
||||||
|
f5 = kl.Dense(MPPT_SIZE)(f4)
|
||||||
|
|
||||||
|
return kl.Dense(TOUT_AMNT)(f5)
|
||||||
|
|
||||||
|
'''
|
||||||
def generate_inception_model(a = 5, b = 4, c = 2):
|
def generate_inception_model(a = 5, b = 4, c = 2):
|
||||||
# start
|
# start
|
||||||
i = kl.Input(shape = (300, 300, 3))
|
i = kl.Input(shape = (300, 300, 3))
|
||||||
|
|
||||||
r1 = kl.Conv2D(1024, (3, 3), padding = 'same', activation = 'relu')(i)
|
r1 = kl.Conv2D(CONV_SIZE, (3, 3), padding = 'same', activation = 'relu')(i)
|
||||||
r2 = kl.Conv2D(1024, (5, 5), padding = 'same', activation = 'relu')(r1)
|
r2 = kl.Conv2D(CONV_SIZE, (5, 5), padding = 'same', activation = 'relu')(r1)
|
||||||
r3 = kl.Conv2D(1024, (7, 7), padding = 'same', activation = 'relu')(r2)
|
r3 = kl.Conv2D(CONV_SIZE, (7, 7), padding = 'same', activation = 'relu')(r2)
|
||||||
|
|
||||||
m1 = kl.MaxPooling2D((3, 3))(r3)
|
m1 = kl.MaxPooling2D((3, 3))(r3)
|
||||||
|
|
||||||
r4 = kl.Conv2D(1024, (3, 3), padding = 'same', activation = 'relu')(m1)
|
r4 = kl.Conv2D(CONV_SIZE, (3, 3), padding = 'same', activation = 'relu')(m1)
|
||||||
r5 = kl.Conv2D(1024, (5, 5), padding = 'same', activation = 'relu')(r4)
|
r5 = kl.Conv2D(CONV_SIZE, (5, 5), padding = 'same', activation = 'relu')(r4)
|
||||||
|
|
||||||
ia0 = kl.MaxPooling2D((2, 2))(r5)
|
ia0 = kl.MaxPooling2D((2, 2))(r5)
|
||||||
|
|
||||||
# a types
|
# a types
|
||||||
for k in range(a):
|
for k in range(a):
|
||||||
exec(f"ia{k}_1_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
exec(f"ia{k}_1_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
||||||
|
|
||||||
exec(f"ia{k}_3_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
exec(f"ia{k}_3_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
||||||
exec(f"ia{k}_3_2 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(ia{k}_3_1)")
|
exec(f"ia{k}_3_2 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(ia{k}_3_1)")
|
||||||
|
|
||||||
exec(f"ia{k}_5_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
exec(f"ia{k}_5_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
||||||
exec(f"ia{k}_5_2 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(ia{k}_5_1)")
|
exec(f"ia{k}_5_2 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(ia{k}_5_1)")
|
||||||
exec(f"ia{k}_5_3 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(ia{k}_5_2)")
|
exec(f"ia{k}_5_3 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu')(ia{k}_5_2)")
|
||||||
|
|
||||||
exec(f"ia{k}_7_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
exec(f"ia{k}_7_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(ia{k})")
|
||||||
exec(f"ia{k}_7_2 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(ia{k}_7_1)")
|
exec(f"ia{k}_7_2 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(ia{k}_7_1)")
|
||||||
exec(f"ia{k}_7_3 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(ia{k}_7_2)")
|
exec(f"ia{k}_7_3 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu')(ia{k}_7_2)")
|
||||||
exec(f"ia{k}_7_4 = kl.Conv2D(1024, (7, 1), padding = 'same', activation = 'relu')(ia{k}_7_3)")
|
exec(f"ia{k}_7_4 = kl.Conv2D(CONV_SIZE, (7, 1), padding = 'same', activation = 'relu')(ia{k}_7_3)")
|
||||||
|
|
||||||
exec(f"ia{k+1} = kl.Concatenate()([ia{k}_1_1, ia{k}_3_2, ia{k}_5_3, ia{k}_7_4])")
|
exec(f"ia{k+1} = kl.Concatenate()([ia{k}_1_1, ia{k}_3_2, ia{k}_5_3, ia{k}_7_4])")
|
||||||
|
|
||||||
# grid size reductor 1
|
# grid size reductor 1
|
||||||
iab_1 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(eval(f"ia{a}"))
|
iab_1 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu', strides = (2,2))(eval(f"ia{a}"))
|
||||||
|
|
||||||
iab_2 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(eval(f"ia{a}"))
|
iab_2 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu')(eval(f"ia{a}"))
|
||||||
iab_3 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(iab_2)
|
iab_3 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(iab_2)
|
||||||
iab_4 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(iab_3)
|
iab_4 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu', strides = (2,2))(iab_3)
|
||||||
|
|
||||||
|
iab_5 = kl.MaxPooling2D((2, 2), padding = 'same')(eval(f"ia{a}"))
|
||||||
|
|
||||||
iab_6 = kl.Concatenate()([iab_1, iab_4, iab_5])
|
iab_6 = kl.Concatenate()([iab_1, iab_4, iab_5])
|
||||||
|
|
||||||
# b types
|
# b types
|
||||||
for k in range(b):
|
for k in range(b):
|
||||||
exec(f"ib{k}_1_1 = kl.MaxPooling2D((2, 2), padding = 'same')(iab_6)")
|
exec(f"ib{k}_1_1 = kl.MaxPooling2D((2, 2), padding = 'same')(iab_6)")
|
||||||
exec(f"ib{k}_1_2 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(i)")
|
exec(f"ib{k}_1_2 = kl.Conv2D(CONV_SIZE, (1, 1), strides = (2,2), padding = 'same', activation = 'relu')(i)")
|
||||||
|
|
||||||
exec(f"ib{k}_3_1 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(iab_6)")
|
exec(f"ib{k}_3_1 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(iab_6)")
|
||||||
|
|
||||||
exec(f"ib{k}_5_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(iab_6)")
|
exec(f"ib{k}_5_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(iab_6)")
|
||||||
exec(f"ib{k}_5_2 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(ib{k}_5_1)")
|
exec(f"ib{k}_5_2 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(ib{k}_5_1)")
|
||||||
exec(f"ib{k}_5_3 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(ib{k}_5_2)")
|
exec(f"ib{k}_5_3 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu')(ib{k}_5_2)")
|
||||||
|
|
||||||
exec(f"ib{k}_7_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(iab_6)")
|
exec(f"ib{k}_7_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(iab_6)")
|
||||||
exec(f"ib{k}_7_2 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(ib{k}_7_1)")
|
exec(f"ib{k}_7_2 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(ib{k}_7_1)")
|
||||||
exec(f"ib{k}_7_3 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(ib{k}_7_2)")
|
exec(f"ib{k}_7_3 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu')(ib{k}_7_2)")
|
||||||
exec(f"ib{k}_7_4 = kl.Conv2D(1024, (7, 1), padding = 'same', activation = 'relu')(ib{k}_7_3)")
|
exec(f"ib{k}_7_4 = kl.Conv2D(CONV_SIZE, (7, 1), padding = 'same', activation = 'relu')(ib{k}_7_3)")
|
||||||
|
|
||||||
exec(f"ib{k+1} = kl.Concatenate()([ib{k}_1_2, ib{k}_3_2, ib{k}_5_3, ib{k}_7_4])")
|
exec(f"ib{k+1} = kl.Concatenate()([ib{k}_1_2, ib{k}_3_2, ib{k}_5_3, ib{k}_7_4])")
|
||||||
|
|
||||||
@ -69,18 +193,18 @@ def generate_inception_model(a = 5, b = 4, c = 2):
|
|||||||
|
|
||||||
# c types
|
# c types
|
||||||
for k in range(c):
|
for k in range(c):
|
||||||
exec(f"ic{k}_1_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
exec(f"ic{k}_1_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
||||||
|
|
||||||
exec(f"ic{k}_3_1 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
exec(f"ic{k}_3_1 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
||||||
|
|
||||||
exec(f"ic{k}_5_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
exec(f"ic{k}_5_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
||||||
exec(f"ic{k}_5_2 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(ib{k}_5_1)")
|
exec(f"ic{k}_5_2 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(ib{k}_5_1)")
|
||||||
exec(f"ic{k}_5_3 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(ib{k}_5_2)")
|
exec(f"ic{k}_5_3 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu')(ib{k}_5_2)")
|
||||||
|
|
||||||
exec(f"ic{k}_7_1 = kl.Conv2D(1024, (1, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
exec(f"ic{k}_7_1 = kl.Conv2D(CONV_SIZE, (1, 1), padding = 'same', activation = 'relu')(i{'b' if k else 'a'}{k if k else a})")
|
||||||
exec(f"ic{k}_7_2 = kl.Conv2D(1024, (3, 1), padding = 'same', activation = 'relu')(ib{k}_7_1)")
|
exec(f"ic{k}_7_2 = kl.Conv2D(CONV_SIZE, (3, 1), padding = 'same', activation = 'relu')(ib{k}_7_1)")
|
||||||
exec(f"ic{k}_7_3 = kl.Conv2D(1024, (5, 1), padding = 'same', activation = 'relu')(ib{k}_7_2)")
|
exec(f"ic{k}_7_3 = kl.Conv2D(CONV_SIZE, (5, 1), padding = 'same', activation = 'relu')(ib{k}_7_2)")
|
||||||
exec(f"ic{k}_7_4 = kl.Conv2D(1024, (7, 1), padding = 'same', activation = 'relu')(ib{k}_7_3)")
|
exec(f"ic{k}_7_4 = kl.Conv2D(CONV_SIZE, (7, 1), padding = 'same', activation = 'relu')(ib{k}_7_3)")
|
||||||
|
|
||||||
exec(f"ib{k+1} = kl.Concatenate()([ib{k}_1_1, ib{k}_3_2, ib{k}_5_3, ib{k}_7_4])")
|
exec(f"ib{k+1} = kl.Concatenate()([ib{k}_1_1, ib{k}_3_2, ib{k}_5_3, ib{k}_7_4])")
|
||||||
|
|
||||||
@ -88,6 +212,7 @@ def generate_inception_model(a = 5, b = 4, c = 2):
|
|||||||
|
|
||||||
o = eval(f"ic{c}")
|
o = eval(f"ic{c}")
|
||||||
return tf.keras.Model(inputs = i, outputs = o)
|
return tf.keras.Model(inputs = i, outputs = o)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -111,6 +236,31 @@ inception_type_a = [a_i, a_o]
|
|||||||
tf.keras.Model(*inception_type_a)
|
tf.keras.Model(*inception_type_a)
|
||||||
'''
|
'''
|
||||||
|
|
||||||
mod = generate_inception_model()
|
gi = kl.Input((300, 300, 3))
|
||||||
|
|
||||||
|
ds = generate_start(gi)
|
||||||
|
|
||||||
|
for _ in range(5):
|
||||||
|
ds = generate_type_a(ds)
|
||||||
|
|
||||||
|
ds = generate_ab_bridge(ds)
|
||||||
|
|
||||||
|
for _ in range(4):
|
||||||
|
ds = generate_type_b(ds)
|
||||||
|
|
||||||
|
uo = generate_aux(ds)
|
||||||
|
|
||||||
|
go = generate_bc_bridge(ds)
|
||||||
|
|
||||||
|
for _ in range(2):
|
||||||
|
go = generate_type_c(go)
|
||||||
|
|
||||||
|
go = generate_finish(go)
|
||||||
|
|
||||||
|
r = kl.Concatenate()([uo, go])
|
||||||
|
|
||||||
|
|
||||||
|
mod = k.Model(inputs = gi, outputs = r)
|
||||||
|
|
||||||
mod.summary()
|
mod.summary()
|
||||||
mod.compile(optimizer = ko.Lion(learning_rate = 0.001))
|
mod.compile(optimizer = ko.Lion(learning_rate = 0.001))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user