模型引數設定與模型構建及訓練
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.callbacks import ModelCheckpoint
model = Sequential()
model.add(Dense(units=64, input_dim=100))
model.add(Activation("relu"))
model.add(Dense(units=64, input_dim=100))
model.add(Activation("softmax"))
#完成模型的搭建后,我們需要使用.compile()方法來編譯模型:
model.compile(loss='categorical_croosentropy',metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32)
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
classes = model.predict(x_test, batch_size=128)
model.save('my_model.h5')
#更改loss函式和優化器
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy])
checkpointer = ModelCheckpoint(filepath="checkpoint-{epoch:02d}e-val_acc_{val_acc:2f}.hdf5"
,save_best_only=true, verbose=1, period=50)
model.fit(data,labels, epoch=10,batch_size=32, callbacks=[checkpointer])
#呼叫Checkpoint保存的model
model = load_model('checkpoint-05e-val_acc_0.58.hdf5')
#模型選取
from keras.application.vgg16 import VGG16
from keras.application.vgg19 import VGG19
from keras.application.inception_v3 import InceptionV3
from keras.application.resnet50 import ResNet50
model_vgg16_conv = VGG16(weights=None, include_top=False, pooling='avg')
output_vgg16_conv = model_vgg16_conv(input)
x = output_vgg16_conv
input = Input(shape=(width,height,channel),name='image_input')
x = Dense(clazz, activation='softmax', name='predictions')(x)
#Create your own model
model = Model(inputs=input, outputs=x)
model.complie(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adam(lr=lr,decay=0),metrics=['acc])
#load all Images
def LoadImageGen(files_data, labels_data,batch=32, label="label"):
start = 0
while start < len(file_data):
stop = start + batch
if stop > len(files_data):
stop = len(file_data)
imgs = []
labels = []
for i in range(start, stop):
imgs.append(LoadImage(file_data[i]))
labels.append(label_data[i])
yield(np.array(imgs),np.array(labels))
if start + batch < len(files_data):
start +=batch
else:
zip_data = https://www.cnblogs.com/TheFaceOfAutumnWhenSummerEnd/archive/2020/10/26/list(zip(files_data,labels_data))
random.shuffle(zip_data)
files_data, labels_data = zip(*zip_data)
start=0
# load Images to training model
model.fit_generator(
LoadImageGen(train_x,train_y, batch=batch,label ="train"),
steps_per_epoch=int(len(train_x)/batch),
epochs = epoch,
verbose = 1,
validation_data = https://www.cnblogs.com/TheFaceOfAutumnWhenSummerEnd/archive/2020/10/26/LoadImageGen(test_x,test_y, batch=batch,label ="test"),
validation_steps = int(len(test_x)/batch),
callbacks=[
EarlyStopping(monitor='val_acc',patience=patienceEpoch)),
modelCheckpoint
]
)
VGG16:VGG(visual geometry group,超解析度測驗序列)
參考:https://zhuanlan.zhihu.com/p/41423739
共包含13卷積層(Convolutional Layer,表示為conv3-XXXX)+3個連接層(Fully connected Layer,表示為FC-XXXX)+5個池化層(Pool layer,表示maxpool),VGG16的16代表權重系數,maxpool沒有權重系數,故16=13+3.


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/192508.html
標籤:其他
