model.prpredict生成的预测数多于输出数



我使用CNN创建了一个多类图像分类器。我专门使用keras模块,并使用生成器来拟合然后预测4个不同类别的图像。我的test_generator有394个例子(所有四个类加在一起(,但我的model.prpredict产生了(6304,4(个预测。

以下是模型摘要:

Model: "sequential_2"
_________________________________________________________________
Layer (type)                Output Shape              Param #   
=================================================================
IP (Conv2D)                 (None, 64, 64, 32)        320       

Convolution0 (Conv2D)       (None, 64, 64, 64)        18496     

PL0 (MaxPooling2D)          (None, 32, 32, 64)        0         

Convolution1 (Conv2D)       (None, 32, 32, 128)       73856     

PL1 (MaxPooling2D)          (None, 16, 16, 128)       0         

Convolution2 (Conv2D)       (None, 16, 16, 256)       295168    

PL2 (MaxPooling2D)          (None, 8, 8, 256)         0         

FL (Flatten)                (None, 16384)             0         

FC (Dense)                  (None, 128)               2097280   

OP (Dense)                  (None, 4)                 516       

=================================================================
Total params: 2,485,636
Trainable params: 2,485,636
Non-trainable params: 0
_________________________________________________________________

以下是我创建test_generator的方式:CCD_ 3和CCD_ 4为394。

以下是我的预测:predictions = model.predict(test_generator),并且predictions.shape的结果是[6304,4]而不是[394,4]。这可能是什么原因?我做错什么了吗?我在这里有什么选择,因为我的下一步是创建一个包含各种指标的分类报告。

这是输入和层数,我看到你使用的是平坦层,后面是密集矩阵,这表示层的输出矩阵。

存在卷积层和致密层,320->18496(32*578(->返回相同大小的MaxPool。

你可以创建一个类似于所附图片的引擎,输出是敏感的,你的问题是相似性和比率。(6304,4(,(394,4(。

它们在统计方法中很重要,只是意味着你不需要我们为你做的密集层

[样本]:

import tensorflow as tf
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Functions
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
def predict_action ( dataset ) :
predictions = model.predict( dataset )
return predictions
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DataSet
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
input = tf.constant( tf.random.uniform(shape=[5, 2], minval=5, maxval=10, dtype=tf.int64), shape=( 1, 1, 5, 2 ) )
label = tf.constant( [0], shape=( 1, 1, 1 )  )
dataset = tf.data.Dataset.from_tensor_slices(( input, label ))
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Model Initialize
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
model = tf.keras.models.Sequential([
tf.keras.layers.InputLayer(input_shape=( 5, 2 )),
tf.keras.layers.Dense( 4 ),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense( 128 ),
tf.keras.layers.Dense( 4 ),
])  
model.summary()
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Optimizer
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
optimizer = tf.keras.optimizers.Nadam(
learning_rate=0.0001, beta_1=0.9, beta_2=0.999, epsilon=1e-07,
name='Nadam'
)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Loss Fn
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""                               
lossfn = tf.keras.losses.MeanSquaredLogarithmicError(reduction=tf.keras.losses.Reduction.AUTO, name='mean_squared_logarithmic_error')
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Model Summary
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
model.compile(optimizer=optimizer, loss=lossfn, metrics=['accuracy'])
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Training
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
history = model.fit(dataset, epochs=1 ,validation_data=(dataset))
print( predict_action( dataset ) )

[输出]:

Layer (type)                Output Shape              Param #
=================================================================
dense (Dense)               (None, 5, 4)              12
flatten (Flatten)           (None, 20)                0
dense_1 (Dense)             (None, 16)                336
dense_2 (Dense)             (None, 4)                 68
=================================================================
Total params: 416
Trainable params: 416
Non-trainable params: 0
_________________________________________________________________
1/1 [==============================] - 1s 1s/step - loss: 0.2335 - accuracy: 0.0000e+00 - val_loss: 0.2291 - val_accuracy: 0.0000e+00
[[ 0.07219216 -2.9527428   1.5981569  -5.590222  ]]

相关内容

  • 没有找到相关文章

最新更新