我是机器学习的初学者,我正在尝试开发一个可以从人脸数据集预测年龄的模型。然而,我的模型没有学习,我正在努力找出原因。我正在导入VGG16架构,但它仍然没有学习。我已经通过论坛搜索,甚至尝试训练模型只有2个例子,它仍然无法过拟合。在整个训练过程中,训练准确性几乎没有增加,验证准确性也没有增加。
path = "../input/agedetection/dataset/dataset"
files = os.listdir(path)
X = []
age_temp = []
for file in files:
img = cv2.imread(path+'/'+file)
img = cv2.resize(img, dsize = target_size)
X.append(img)
fields = file.split('_')
age_temp.append(fields[0])
X = np.array(X).astype('float32')
X = X/255
#converting age into different brackets - 0-20, 21-40, 41-60,61+
age = np.zeros(len(age_temp))
for i in range(len(age_temp)):
curr_age = int(age_temp[i])
if curr_age <= 20:
val = 0
elif curr_age <= 40:
val = 1
elif curr_age <= 60:
val = 2
else:
val = 3
age[i] = val
age = to_categorical(age, num_classes = 4)
age = age.astype('float32')
base_model_age = tf.keras.applications.VGG16(input_shape=input_shape,include_top=False,weights="imagenet")
for layer in base_model_age.layers[:-20]:
layer.trainable=False
model_age = Sequential()
model_age.add(base_model_age)
model_age.add(Flatten())
model_age.add(Dense(1024, activation='relu'))
model_age.add(Dense(4, activation = 'relu'))
model_age.compile(optimizer=Adam(adam),
loss='mse'
,metrics=['accuracy'])
hist_age = model_age.fit(X_train, age_train,
validation_data=(X_validation, age_validation),
epochs=10, steps_per_epoch=256,
callbacks=[lrd, mcp])
字符串
1条答案
按热度按时间wrrgggsh1#
你把这个问题设计成一个分类问题。但是,您的模型被构造为回归模型。如果你做了下面的改变,你可能会得到更好的预测。
model_age.add(base_model_age)
应该是model_age.add(base_model_age.output)
第二,改变
字符串
收件人:
型
第三,改变
型
收件人:
型
最后,你似乎训练了最后20层。你可能不需要训练这么多层,只需要最高密度的层就足够了。