Jea*_*rot 5 python prediction tensorflow
我已经实现了以下版本的 ResNet50。我在另一个笔记本中使用自己的数据训练了模型,因此我只需加载权重并编译模型即可。现在,我只想对我未见过的新数据进行预测。
def resnet50F(im_size):
resnet = ResNet50(input_shape=(im_size, im_size, 3), weights='imagenet', include_top = False)
headModel = AvgPool2D(pool_size=(3,3))(resnet.output)
headModel = Flatten(name='flatten')(headModel)
headModel = Dense(256, activation='relu')(headModel)
headModel = Dropout(0.5)(headModel)
headModel = Dense(1, activation='sigmoid')(headModel)
model = Model(inputs=resnet.input, outputs=headModel)
model.trainable = True
return model
resnet50 = resnet50F(im_size=224)
resnet50.load_weights(PATH_MODEL_WEIGHTS)
opt = optimizers.Adam(learning_rate=1e-6)
resnet50.compile(loss='binary_crossentropy', optimizer=opt, metrics=METRICS)
predictions = resnet50.predict(X)
Run Code Online (Sandbox Code Playgroud)
但是,当我打印时predictions,我得到以下输出:
[[4.22752373e-06]
[2.81104029e-10]
[3.21204737e-02]
[5.09007333e-12]
[6.25871266e-08]
[3.95518853e-08]
[3.76289577e-09]
[1.04685043e-07]
[4.40788448e-01]
[4.18029167e-09]
[1.68976447e-04]
[4.83552366e-03]
[5.67837298e-01]
[1.92822833e-02]
[1.86168763e-04]
[3.30054699e-11]
[1.55285016e-01]
[1.40850764e-12]
[4.75460291e-02]
[2.36899691e-08]
[1.91837142e-04]
[2.70789745e-03]
[2.28864295e-07]
[1.04725331e-08]
[3.17185315e-15]
[1.86515141e-08]
[9.09119472e-03]
[2.67773657e-06]
[6.43107248e-03]
[1.06139310e-14]
[3.12786847e-01]
[1.47488710e-04]
[7.75789477e-09]
[2.05256441e-03]
[5.19017190e-11]
[6.54808059e-02]
[9.27565736e-04]
[6.90304815e-26]
[8.59875661e-14]
[2.54806340e-01]
[1.05227390e-02]
[4.43476923e-02]
[3.65121141e-02]
[4.71908916e-13]
[1.16901109e-02]
[2.83952375e-07]
[6.87847793e-01]
[6.25556211e-08]
[2.92979064e-03]
[1.00091375e-08]
[7.29291560e-06]
[7.43216195e-16]
[1.16142066e-04]
[6.63836045e-06]
[4.89238771e-12]
[3.75503966e-08]
[7.99435584e-05]
[5.35736717e-06]
[2.15524092e-11]
[1.89218114e-14]
[4.04082388e-02]
[1.11348586e-09]
[1.72054302e-03]
[2.21202258e-11]
[2.13359108e-08]
[2.09557402e-05]
[1.01457292e-04]
[9.81324539e-03]
[9.62927871e-08]
[4.38750768e-03]
[7.26699904e-02]
[6.57562000e-16]
[4.28197110e-13]]
Run Code Online (Sandbox Code Playgroud)
据我了解,它应该代表我的模型属于 1 类的概率。因此,要么只有一个样本被预测为 1 类 (5.67837298e-01),要么我在方法中遗漏了一些内容。
第一个问题是X是什么?我假设 X 是一个 np 图像数组,每个图像本身就是一个 np 数组。现在,您必须确保对训练图像进行的任何处理都对 X 图像进行相同的处理。例如,如果您在 rgb 图像上进行训练,则 X 中的图像必须是 rgb 图像。如果调整训练图像的大小,则必须将 X 图像调整为相同大小。如果缩放了训练图像的像素值,则必须重新缩放 X 图像的像素。一旦您确定了上述内容,请尝试使用此代码
preds=model.predict(X)
for p in preds:
if P>=.5:
klass=1
else:
klass=0
print(klass)
Run Code Online (Sandbox Code Playgroud)