【发布时间】:2019-11-14 05:21:19
【问题描述】:
我正在学习使用 Keras 的密集层的最简单的神经网络。我正在尝试在一个相对较小的数据集上实现人脸识别(总共约 250 张图像,每类 50 张图像)。
我已经从谷歌图片下载了图片,并将它们调整为 100 * 100 png 文件。然后我将这些文件读入numpy 数组,并创建了一个热标签数组来训练我的模型。
这是我处理训练数据的代码:
X, Y = [], []
feature_map = {
'Alia Bhatt': 0,
'Dipika Padukon': 1,
'Shahrukh khan': 2,
'amitabh bachchan': 3,
'ayushmann khurrana': 4
}
for each_dir in os.listdir('.'):
if os.path.isdir(each_dir):
for each_file in os.listdir(each_dir):
X.append(cv2.imread(os.path.join(each_dir, each_file), -1).reshape(1, -1))
Y.append(feature_map[os.path.basename(each_file).split('-')[0]])
X = np.squeeze(X)
X = X / 255.0 # normalize the training data
Y = np.array(Y)
Y = np.eye(5)[Y]
print (X.shape)
print (Y.shape)
这是打印(244, 40000) 和(244, 5)。这是我的模型:
model = Sequential()
model.add(Dense(8000, input_dim = 40000, activation = 'relu'))
model.add(Dense(1200, activation = 'relu'))
model.add(Dense(700, activation = 'relu'))
model.add(Dense(100, activation = 'relu'))
model.add(Dense(5, activation = 'softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, epochs=25, batch_size=15)
当我训练模型时,它停留在0.2172 的准确度上,这几乎与随机预测 (0.20) 相同。
我也尝试过使用灰度图像训练模式,但仍然没有达到预期的准确性。还通过改变隐藏层和隐藏层中神经元的数量来尝试不同的网络架构。
我在这里缺少什么?我的数据集太小了吗?还是我遗漏了任何其他技术细节?
更多代码细节,这里是我的笔记本:https://colab.research.google.com/drive/1hSVirKYO5NFH3VWtXfr1h6y0sxHjI5Ey
【问题讨论】:
标签: python machine-learning keras deep-learning artificial-intelligence