首页 > 解决方案 > 如何用更小和更多的数据集重新训练 TF/Keras 深度学习模型

问题描述

这是我的二进制分类示例的示例代码。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.models import load_model
from tensorflow.keras.layers import Dense
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler

dfLarge = pd.read_csv('CSV_DATA_Large.csv')
XLarge = df[FEATURES_HEADER].values
yLarge = df[CLASS_LABEL].values
X_trainLarge, X_testLarge, y_trainLarge, y_testLarge = train_test_split(XLarge, yLarge, test_size=.33)

scaler = MinMaxScaler()
scaler.fit(X_trainLarge)
scaled_X_trainLarge = scaler.transform(X_trainLarge)
scaled_X_testLarge = scaler.transform(X_testLarge)
model = Sequential()
model.add(Dense(units=18,activation='relu',input_shape=[14,]))
model.add(Dense(units=14,activation='relu'))
model.add(Dense(units=1,activation='sigmoid'))

#在大数据集上编译模型

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

#fit 大型数据集上的模型

model.fit(x=scaled_X_trainLarge, y=y_trainLarge, epochs=100, validation_data=(scaled_X_testLarge,y_testLarge),callbacks=[EARLY_STOP])

#Saving 模型,用大数据训练。

model.save('model.h5')
joblib.dump(scaler,'scaler.pk1')

################ 加载模型############

saved_model = load_model('model.h5')
saved_scaler = joblib.load('scaler.pk1')

#新数据

dfSmall = pd.read_csv('CSV_DATA_Small.csv')
XSmall = df[FEATURES_HEADER].values
ySmall = df[CLASS_LABEL].values
X_trainSmall, X_testSmall, y_trainSmall, y_testSmall = train_test_split(XSmall, ySmall, test_size=.33)

问题

我的问题是如何在不丢失现有权重的情况下对现有训练模型进行多次再训练(使用类似和更小的数据集)。

我见过很多例子,但这些都是使用来自 TensorFlow Hub 的预训练图像。

标签: pythontensorflowkerastensorflow2.0

解决方案


推荐阅读