我有一个特征提取算法,可以很好地从图像中提取特征。我想开发一个人工神经网络来根据这些特征对这些图像进行分类。我已将 csv 文件中的特征提取为列和行。我知道我们可以使用 CNN 来提取和分类图像,但我的 scerio 只是后半部分(特征分类)。谢谢
用于提取的离散图像特征的 ANN 分类器
数据挖掘
分类
美国有线电视新闻网
图像分类
分类器
安
2022-03-04 09:51:41
1个回答
如果您已经提取了特征向量从你的图像。然后确实可以使用人工神经网络 (ANN) 对这些进行分类,因为您已经标记了实例。
您可以在 python 中使用多个不同的库(例如 scikit-learn、Keras 或 tensorflow)轻松完成此操作。Scikit-learn 是最容易实现但最不灵活的。Keras 允许更复杂的 ANN,而 tensorflow 允许您可以想象的各种自定义结构。
Scikit-学习
这是实现单层 ANN 的最简单方法。
from sklearn.neural_network import MLPClassifier
X = [[0., 0.], [1., 1.]]
y = [0, 1]
clf = MLPClassifier(solver='adam', alpha=1e-5,
hidden_layer_sizes=(32,), random_state=1)
clf.fit(X, y)
clf.score(X, y)
喀拉斯
首先我们建立一个我们想要使用的模型。这是一个简单的单层神经网络的例子。是每个实例的特征数,并且是您期望的输出类的数量。
from __future__ import print_function
import keras
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.models import model_from_json
from keras import backend as K
input_shape = (k,)
model = Sequential()
model.add(Dense(32, activation='tanh',
input_shape=input_shape))
model.add(Dense(num_classes, activation='linear'))
model.compile(loss=keras.losses.mean_squared_error,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
您可以通过使用查看模型的摘要
model.summary()
然后我们可以使用
batch_size = 128
epochs = 10
model.fit(x_train, y_train_binary,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test_binary))
您将需要调整此代码示例中的所有超参数以更好地适应您的数据。
其它你可能感兴趣的问题