-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.py
51 lines (44 loc) · 1.73 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from tensorflow.keras.applications import *
from tensorflow.keras.models import Sequential,Model
from tensorflow.keras.layers import *
from tensorflow.keras.optimizers import *
from tensorflow.keras.callbacks import *
from tensorflow.keras.initializers import *
import tensorflow as tf
import os
def create_model():
train_input_shape=(224,224,3)
based_model = ResNet50(weights='imagenet', include_top=False, input_shape=train_input_shape)
for layer in based_model.layers:
layer.trainable = True
# Add layers at the end
X = based_model.output
X = Flatten()(X)
X = Dense(512, kernel_initializer='he_uniform')(X)
X = Dropout(0.5)(X)
X = BatchNormalization()(X)
X = Activation('relu')(X)
X = Dense(125, kernel_initializer='he_uniform')(X)
X = Dropout(0.5)(X)
X = BatchNormalization()(X)
X = Activation('relu')(X)
output1 = Dense(Artist_class_num, name='Artist_output',activation='softmax')(X)
output2 = Dense(Style_class_num, activation='softmax',name='Style_output')(X)
output3 = Dense(Objtype_class_num, activation='softmax',name='Objtype_output')(X)
#model = Model(inputs=based_model.input, outputs=[output1,output2,output3])
output4 = Dense(CreationDate_class_num, activation='sigmoid',name='CreationDate_output')(X)
model = Model(inputs=based_model.input, outputs=[output1,output2,output3,output4])
return model
def generate_classdict(label):
counter = Counter(label)
class_num=len(counter)
class_list=list(counter.keys()) #?
class_dict={}
class_weight={}
total = len(label)
count=0
for name,num in counter.items():
class_dict[name]=count
class_weight[count]=(total/(num*class_num))
count+=1
return class_num,class_list,class_dict,class_weight