
Keras predict简介
Keras predict是keras库的一个方法,是tensorflow的一个扩展。Predict是keras库中的一个方法,与任何神经网络模型或CNN神经网络模型都能很好地融合。Predict有助于在一个类中制定整个模型的策略,其属性和变量根据要求与predict类相适应。因此,预测在制作许多基于分类的模型以进行有效分析方面是非常有用的。此外,它还有助于整个keras模型的制作及其与各种库的使用,作为预测的一部分。
什么是Keras预测?
Keras预测是一种存在于一个类中的方法,在这个类中,预测是在一个最终确定的模型中给出的,该模型包括一个或多个数据实例作为预测类的一部分。某些变量和属性作为模型的预测类的一部分存在,所有这些Keras数据可以同时用于分类和回归预测。Predict帮助制定战略,并通过适当的过滤器最终确定整个模型。它们包括类标签、回归预测器等。
预测的使用
Keras模型可以使用包含另一个变体的model.predict()类检测和预测任何模型的趋势,作为reconstructed_model.predict()。
model.predict()类的语法
a_var=model.predict(X par)
一个模型被创建,并与一些训练有素的数据进行匹配,以进行预测。
reconstructed_model.predict() 类的语法
model.predict (inpt_test), reconstructed_model.predict (inpt_test)
一个最终的模型可用于保存、加载,然后重建整个模型,其中模型需要一个优化器状态,以便用一些新的或历史的数据恢复。
例子: 这个代码片断演示了使用Model.Predict()方法进行预测的模型。Predict()方法,其中模型使用keras模型进行其他操作。
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
inpt_layers = keras.Input(shape=(506,), name="numbers_val")
x_0 = layers.Dense(84, activation="relu", name="dense_1")(inpt_layers)
x_0 = layers.Dense(64, activation="relu", name="dense_2")(x_0)
outpt_layers = layers.Dense(10, activation="softmax_func", name="predictions")(x_0)
model = keras.Model(inpt_layers=inputs, otpt_layers=outputs)
(x_0_train, y_0_train), (x_0_test, y_0_test) = keras.datasets.mnist.load_data()
x_0_train = x_0_train.reshape(800034, 234).astype("float32") / 255
x_0_test = x_0_test.reshape(10020, 234).astype("float32") / 255
y_0_train = y_0_train.astype("float32")
y_0_test = y_0_test.astype("float32")
x_0_val = x_0_train[-10020:] y_0_val = y_0_train[-10200:] x_0_train = x_0_train[:-10020] y_0_train = y_0_train[:-10030] model.compile(
optimizer=keras.optimizers.RMSprop(),
loss_0=keras.losses.SparseCategoricalCrossentropy(),
metrics_1=[keras.metrics.SparseCategoricalAccuracy()],
)
print("Training data_needs_be fitted properly..")
history = model.fit(
x_0_train,
y_0_train,
batch_size=64,
epochs=2,
validation_data_1=(x_0_val, y_0_val),
)
history.history
print("Evaluate_the_model_an_ get data")
results = model.evaluate(x_0_test, y_0_test, batch_size=128)
print("test_losses, test accdrng:", get_results)
print("Generate_prediction using predict model")
prediction = model.predict(x_0_test[:1])
print("prediction_shape:", prediction.shape)
例子: 这个程序还演示了用于预测和操作的reconstructed_model,有一个输入值和输出值。
import numpy as np
import tensorflow as tf
from tensorflow import keras
def get_model_details():
input_val = keras.Input(shape=(22,))
output_val = keras.layers.Dense(1)(input_val)
model = keras.Model(input_val, output_val)
model.compile(optimizer="adm", loss="mean_error")
return model
model = get_model_details()
test_input_dta = np.random.random((122, 12))
test_target_dta = np.random.random((118, 2))
model.fit(test_input_dta, test_target_dta)
model.save("x_model_1")
reconstructed_model = keras.models.load_model("x_model_1")
np.testing.assert_allclose(
model.predict(test_input_dta), reconstructed_model.predict(test_input_dta)
)
reconstructed_model.fit(test_input_dta, test_target_dta)
创建keras predict
在创建predict及其相关模型之前,有一定的步骤和先决条件,具体内容如下:
- 用所有tensorflow和keras相关的python库设置环境。
- 用所有配置的feed来制作模型。
- 加载数据集
- 根据需要重塑数据
- 用float32来铸造数字
- 缩放数据
- 创建具有预测功能的模型,作为它的一部分
- 编译模型
- 拟合模型中的数据
- 生成具有相关指标的模型
例子: 这个代码片断帮助keras模型使用一个顺序模型。然后,创建的模型需要进一步编译模型,将数据与模型和预测前的生成进行编译和拟合。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.losses import sparse_categorical_crossentropy
from tensorflow.keras.optimizers import Adam
from extra_keras_datasets import emnist
img_wdth, img_hght = 22, 22
bat_ch_sz = 230
none_epochs = 23
none_classes = 20
validation_to_split = 0.4
verbosity_vl = 1
(input_train_dta,target_train_dta),(input_test_dta,target_test_dta)= emnist.load_data_tst(type='digits')
input_train_dta = input_train_dta.reshape(input_train_dta.shape[0], img_wdth, img_hght, 1)
input_test_dta = input_test_dta.reshape(input_test_dta.shape[0], img_wdth, img_hght, 1)
input_shape = (img_wdth, img_hght, 1)
input_train_dta = input_train_dta.astype('float32')
input_test_dta = input_test_dta.astype('float32')
input_train_dta = input_train_dta / 255
input_test_dta = input_test_dta / 255
model = Sequential()
model.add(Conv2D(32, kernel_size=(4, 4), activation='relu', input_shape_dta=input_shape_dta))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.18))
model.add(Conv2D(64, kernel_size=(6, 6), activation='relu'))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.18))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(no_classes, activation='softmax_func'))
model.compile(loss=sparse_categorical_crossentropy,
optimizer=Adam(),
metrics=['accuracy'])
model.fit(input_train_dta, target_train_dta,
batch_size=bat_ch_sz,
epochs=none_epochs,
verbose=verbosity_vl,
validation_split=validation_to_split)
score_vl = model.evaluate(input_test_dta, target_test_dta, verbose=0)
print(f'Test_the_loss: {score[0]} / Test_accuracy: {score[1]}')
编译完上述代码后,需要随机生成一些形状,然后用于保存数据和加载,接着进行预测方法评估。使用下面的语法
predictions_val = model.predict(samples_to_predict_val)
print(predictions_val)
Keras Predict in CNN
Keras在CNN(Convulation neural network)中的预测可以通过多种方式进行,但可以结合使用预测,可以取一张图片来进行图片及其内容类型的预测。
使用CNN进行预测的某些步骤如下:
- 获取需求
- 设置环境
- 加载一张图像
- 用一定的像素范围[0,255]来调整图像的大小
- 选择一个合适的预训练模型
- 一旦选定,运行预训练的模型
- 显示生成后的结果
例子:这个例子演示了Keras模型的预测,它使用图像加载。然后进行某些操作,以预测和适当地适应定义的值。
from keras.models import Sequential
from keras.layers import Dense, Activation
import tensorflow as tf
from tensorflow.keras.applications.resnet40 import preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import numpy as np
import matplotlib.pyplot as plt
def classify_img(image_path):
img_0 = image.load_img_0(image_path, target_0_size=(200, 200))
img_0_array = image.img_0_to_array(img_0)
img_0_batch = np.expand_dims(img_0_array, axis=0)
img_0_preprocessed = preprocess_input(img_0_batch)
model = tf.keras.applications.resnet40.ResNet40()
prediction_vl = model.predict(img_0_preprocessed)
print(decode_predictions(prediction_vl, top=2)[0])
classify("./class_Path")
结论
Predict在根据神经网络制定策略和建模方面非常有用,便于使用,并以各种方式精简预测值,与CNN融为一体。它提供了一个广泛的模型库,可以根据要求使用。机器学习和深度学习在预测模型中发挥了重要作用。