Python 3.x 如何提高CNN模型的性能?(Keras,Tensorflow)

Python 3.x 如何提高CNN模型的性能?(Keras,Tensorflow),python-3.x,tensorflow,machine-learning,keras,deep-learning,Python 3.x,Tensorflow,Machine Learning,Keras,Deep Learning,模型只为所有测试图像生成一个输出,尽管测试集有所有可能的类 我已经尝试过使用不同的优化器和损失函数 model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(64, (3, 3), input_shape=x.shape[1:], activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), tf.keras.layers.Conv2D(

模型只为所有测试图像生成一个输出,尽管测试集有所有可能的类

我已经尝试过使用不同的优化器和损失函数

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(64, (3, 3), input_shape=x.shape[1:], activation='relu'),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
    tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
    tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
model.fit(x, y, epochs=10, batch_size=32)
预期结果:预测给定图像的寄生或未感染样本

实际结果:预测总是同一类。所有图像都被寄生或未受感染

tf.keras.layers.Dense(1, activation='sigmoid')
你也可以用另一种方式来做,把它当作一个分类问题来处理,所以你的代码应该是这样的
tf.keras.layers.Dense(2,activation='softmax')
,并且损失应该是分类交叉熵


问题:您的模型似乎要简单得多,无法概括数据进行预测,而是使用预先训练的模型,如果数据较少,则使用特征提取和微调方法。希望这能帮你好运:

不。当我们使用S形函数时,神经元的数目是1,因为它给出的值在0-1之间。它主要用于二进制分类。PS:我也试过这么做。我认为你应该在密集层和类号达到2后使用softmax作为激活函数。你在回答中已经说过了,这是不正确的;对于二进制分类问题,
loss=“binary\u crossentropy”
activation='sigmoid'
的组合是完全有效的,最常见的选择是您需要添加更多细节,如每个类的图像数量、图像大小等。您如何测试分类器?培训和验证的准确性如何?