tensorflow - 狗类型的图像识别不起作用,我的模型可能是问题,但对它很陌生
问题描述
我遇到了这个数据集:https ://www.kaggle.com/jessicali9530/stanford-dogs-dataset
当我尝试遵循 youtube 上的指南时,想尝试自己尝试机器学习。不知道应该如何构建模型。我得到了神经元和层的基本知识,但不确定为什么准确性和损失感觉不对。模型创建的任何指南/解释(Activation、Conv2D、MaxPooling2D、Flatten、loss、optimizer)
我尝试将激活和丢失更改为反复试验来掌握这个概念。
我想我的问题是这些
model = Sequential()
model.add(Conv2D(64,(3,3),input_shape=X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64,(3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Dense(1))
model.add(Activation("softmax"))
model.compile(loss="mean_squared_error",
optimizer="adam",
metrics=["accuracy"])
我的 Jupyter 笔记本文件: 我的 Jupyter 笔记本文件
准确性和损失 如您所见,准确性是垃圾,损失超出了图表。
解决方案
将狗的图像分类为各种类别是一项分类任务。机器学习中有两种类型的问题:分类和回归。
分类处理分类标签,因此需要合适的损失函数。您应该使用如下categorical_crossentropy
损失函数:
model.compile(loss="categorical_crossentropy",
optimizer="adam",
metrics=["accuracy"])
请参阅此处了解更多信息。
均方误差 (MSE)用于回归问题,因为它处理连续标签。它用于为特定数据集找到最佳拟合线,以使 MSE 最小。
我认为这应该可以解决您的问题。如果问题仍然存在,请尝试以下步骤:
- 将学习率降低到 0.0001 甚至更小。
- 使用
Dropout
图层。 - 使用
LeakyReLU
图层。
推荐阅读
- jquery - jquery 从多维 JSON 数组中读取数据
- sql-server - CTE 循环直到出现下一个 TextData 字段
- python - 高维与距离的诅咒
- git - 如何删除并重新获取所有 git 子模块?
- android - 操作类型未注册“NonMaxSuppressionV3”张量流
- angularjs - 无法使用 Angularjs 使用 okta 登录页面
- database - 哈希索引永远不是聚集索引吗?
- reactjs - 使用 React 缺少 MapBox CSS
- javascript - 在以角度 4 渲染函数后从服务共享数据到组件
- matplotlib - 绘制非常大的 2D 彩色地图/瀑布图/频谱图