我按照教程学习如何使用python创建一个简单的神经网络。以下是代码:
def image_to_feature_vector(image, size=(32,32)):
return cv2.resize(image, size).flatten()
ap = argparse.ArgumentParser()
ap.add_argument("-d", "--dataset", required=True,
help="path to input dataset")
args = vars(ap.parse_args())
print("[INFO] describing images...")
imagePaths = list(paths.list_images(args["dataset"]))
print(imagePaths) #this is list of all image paths
# initialize the data matrix and labels list
data = []
labels = []
for (i, imagePath) in enumerate(imagePaths):
image = cv2.imread(imagePath)
label = imagePath.split(os.path.sep)[-1].split(".")[0]
features = image_to_feature_vector(image)
data.append(features)
labels.append(label)
# show an update every 1,000 images
if i > 0 and i % 1000 == 0:
print("[INFO] processed {}/{}".format(i, len(imagePaths)))
# encode the labels, converting them from strings to integers
le = LabelEncoder()
labels = le.fit_transform(labels)
data = np.array(data) / 255.0
labels = np_utils.to_categorical(labels, 2)
print("[INFO] constructing training/testing split...")
(trainData, testData, trainLabels, testLabels) = train_test_split(
data, labels, test_size=0.25, random_state=42)
#constructing the neural network
model = Sequential()
model.add(Dense(768, input_dim=3072, init="uniform",
activation="relu"))
model.add(Dense(384, init="uniform", activation="relu"))
model.add(Dense(2))
model.add(Activation("softmax"))
# train the model using SGD
print("[INFO] compiling model...")
sgd = SGD(lr=0.01)
model.compile(loss="binary_crossentropy", optimizer=sgd,
metrics=["accuracy"])
model.fit(trainData, trainLabels, nb_epoch=50, batch_size=128)
#Test the model
# show the accuracy on the testing set
print("[INFO] evaluating on testing set...")
(loss, accuracy) = model.evaluate(testData, testLabels,
batch_size=128, verbose=1)
print("[INFO] loss={:.4f}, accuracy: {:.4f}%".format(loss,
accuracy * 100))
最后几行针对测试集运行训练好的神经网络,并显示准确度如下:
但是,有没有一种方法,而不是这个测试集,我只提供一个图像的路径,它告诉它是猫还是狗(本教程使用猫/狗样本,所以只是使用它现在)。我在上面的代码中如何做到这一点?感谢。
答案 0 :(得分:2)
Keras模型采用predict方法。
predictions = model.predict(images_as_numpy_array)
将为您提供任何所选数据的预测。您将先前打开并将图像转换为numpy数组。就像您为培训和测试集所做的那样:
image = cv2.imread(imagePath)
label = imagePath.split(os.path.sep)[-1].split(".")[0]
features = image_to_feature_vector(image)