- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
cnn_model = Sequential()
cnn_model.add(Conv2D(64,3, 3, input_shape = (28,28,1), activation='relu'))
cnn_model.add(MaxPooling2D(pool_size = (2, 2)))
cnn_model.add(Dropout(0.25))
cnn_model.add(Flatten())
cnn_model.add(Dense(output_dim = 32, activation = 'relu'))
cnn_model.add(Dense(output_dim = 10, activation = 'sigmoid'))
cnn_model.compile(loss ='sparse_categorical_crossentropy', optimizer=Adam(lr=0.001),metrics =['accuracy'])
epochs = 50
history = cnn_model.fit(X_train,
y_train,
batch_size = 512,
nb_epoch = epochs,
verbose = 1,
validation_data = (X_validate, y_validate))
最后我得到了这个结果:
Epoch 50/50
48000/48000 [==============================] - 35s 728us/step - loss: 0.1265 - accuracy: 0.9537 - val_loss: 0.2425 - val_accuracy: 0.9167
training loss=0.125 ,validation loss=0.2425
training accuracy=95.3% ,validation accuracy=91.67
我的问题如下:
最佳答案
由于模型过拟合,你可以
Shuffle
数据,通过在 cnn_model.fit
中使用 shuffle=True
。提前停止
正则化
完整代码,使用与您相同的架构,减少过拟合,如下所示。损失有所增加,但我们可以通过添加更多的卷积层和池化层来改进它。
# To support both python 2 and python 3
from __future__ import division, print_function, unicode_literals
from io import open
# Common imports
import numpy as np
import os
import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D, MaxPool2D, Dense, Dropout, Flatten
from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import Adam
import matplotlib.pyplot as plt
from tensorflow.keras.regularizers import l2
from matplotlib.pyplot import axis as ax
tf.__version__
X = tf.placeholder(tf.float32, shape=[None, 784], name="X")
X_reshaped = tf.reshape(X, shape=[-1, 28, 28, 1])
y = tf.placeholder(tf.int32, shape=[None], name="y")
# instantiate regularizer
Regularizer = l2(0.001)
cnn_model = Sequential()
cnn_model.add(Conv2D(64,3, 3, input_shape = (28,28,1), activation='relu', data_format='channels_last',
activity_regularizer=Regularizer, kernel_regularizer=Regularizer))
cnn_model.add(MaxPool2D(pool_size = (2, 2)))
cnn_model.add(Dropout(0.25))
cnn_model.add(Flatten())
cnn_model.add(Dense(units = 32, activation = 'relu',
activity_regularizer=Regularizer, kernel_regularizer=Regularizer))
cnn_model.add(Dense(units = 10, activation = 'sigmoid',
activity_regularizer=Regularizer, kernel_regularizer=Regularizer))
cnn_model.compile(loss ='sparse_categorical_crossentropy', optimizer=Adam(lr=0.001),metrics =['accuracy'])
epochs = 50
cnn_model.summary()
(X_train, y_train), (X_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0
X_train_reshaped = tf.reshape(X_train, shape=[-1, 28, 28, 1])
X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0
X_test_reshaped = tf.reshape(X_test, shape=[-1, 28, 28, 1])
y_train = tf.cast(y_train, dtype = tf.int32)
y_test = tf.cast(y_test, dtype = tf.int32)
def shuffle_batch(X, y, batch_size):
rnd_idx = np.random.permutation(len(X))
n_batches = len(X) // batch_size
for batch_idx in np.array_split(rnd_idx, n_batches):
X_batch, y_batch = X[batch_idx], y[batch_idx]
yield X_batch, y_batch
#steps_per_epoch = X_train_reshaped.shape[0]//512
steps_per_epoch = X_train_reshaped.shape[0].value//512
epochs = 50
callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=15)
history = cnn_model.fit(x = X_train_reshaped,
y = y_train,
batch_size = 512,
epochs = epochs, callbacks=[callback],
verbose = 1, validation_data = (X_test_reshaped, y_test),
validation_steps = 10, steps_per_epoch=steps_per_epoch, shuffle = True)
print(history.history.keys())
# "Accuracy"
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()
# "Loss"
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
axes = plt.axes()
axes.set_ylim([0.2, 1.5])
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()
关于python - 使用 CNN 的时尚 MNIST,过度拟合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58858517/
R-CNN、fast R-CNN、faster R-CNN 和 YOLO 在以下方面有什么区别: (1) 同一图像集上的精度 (2) 给定 SAME IMAGE SIZE,运行时间 (3) 支持安卓移
我试图比较 CNN 模型和组合 CNN-SVM 模型进行分类的准确性结果。然而我发现 CNN 模型比 CNN-SVM 组合模型具有更好的准确性。这是正确的还是可能发生? 最佳答案 这取决于很多因素,但
我知道这可能是一个愚蠢的问题,但我对机器学习和人工神经网络有点陌生。 深度卷积神经网络和密集卷积神经网络有什么区别吗? 提前致谢! 最佳答案 密集 CNN 是深度 CNN 的一种,其中每一层都与比自身
我正在使用预训练的 CNN 从图片中提取特征。使用这些特征作为新 CNN/NN 的输入有意义吗?以前做过吗?我很高兴得到答复。 最佳答案 这称为微调。这是非常常用的。通常,我们会删除 VGG 或类似网
与 caffe 合作几个月后,我已经能够成功地训练我自己的模型。例如,比我自己的模型更进一步,我已经能够用 1000 个类来训练 ImageNet。 现在在我的项目中,我试图提取我感兴趣的区域。之后我
我正在使用下面的 LeNet 架构来训练我的图像分类模型,我注意到每次迭代都不会提高训练和验证的准确性。这方面的任何专家都可以解释可能出了什么问题吗? 训练样本 - 属于 2 个类别的 110 张图像
我使用剩余连接实现了以下 CNN,用于在 CIFAR10 上对 10 个类进行分类: class ConvolutionalNetwork(nn.Module): def __init__(se
我有一组二维输入数组 m x n即 A,B,C我必须预测两个二维输出数组,即 d,e我确实有预期值。如果您愿意,您可以将输入/输出视为灰色图像。 由于空间信息是相关的(这些实际上是 2D 物理域)我想
我正在开发一个交通跟踪系统,该系统可以分析已经收集的视频。我正在使用opencv,线程,pytorch和dectron2。为了加快从opencv抓帧的速度,我决定使用Thread,该线程运行一个循环,
我正在解决一个问题,需要我构建一个深度学习模型,该模型必须基于某些输入图像输出另一个图像。值得注意的是,这两个图像在概念上是相关的,但它们没有相同的尺寸。 起初我认为具有最终密集层(其参数是输出图像的
我正在制作一个卷积网络来预测 3 类图像:猫、狗和人。我训练了又训练它,但是当我传递猫图像来预测时,它总是给出错误的输出。我尝试了其他猫的照片,但结果没有改变。对于人和狗来说没有问题,只是对于猫来说。
我接到一项任务,要实现一个卷积神经网络,该网络可以评估 MNIST dataset 中找到的手写数字。网络架构如下所示: 我已经实现了一个与架构相匹配的 CNN,不幸的是它的准确率只有 10% 左右。
我正在尝试在 Keras 中重新创建 CNN 来对点云数据进行分类。 CNN 在 this 中描述。纸。 网络设计 这是我当前的实现: inputs = Input(shape=(None, 3))
我想为有 300 个类的数据集设计 CNN。我已经用以下模型对两个类(class)进行了测试。它具有良好的准确性。 model = Sequential([ Conv2D(16, 3, padding
我成功训练了 CNN 模型,但是当我向模型提供图像以使其预测标签时,出现错误。 这是我的模型(我正在使用 saver.restore 恢复它)... # load dataset mnist = in
我恢复了用于人脸检测的预训练模型,该模型一次获取单个图像并返回边界框。如果这些图像具有不同的尺寸,如何才能获取一批图像? 最佳答案 您可以使用tf.image.resize_images方法来实现这一
我有大约 8200 张图像用于人脸检测任务。其中 4800 个包含人脸。其他 3400 张图像包含 3D 人脸面具(由橡胶/ latex 制成)、卡通人脸、猴子脸的图像。我想检测给定的图像是否包含真实
我有一组合成噪声图像。示例如下: 我还有它们相应的干净文本图像作为我的地面实况数据。下面的例子: 两个图像的尺寸为4918 x 5856。它的大小是否适合训练我的执行图像去噪的卷积神经网络?如果没有,
大家好! 由于我正在尝试制作一个将灰度图像转换为 RGB 图像的全卷积神经网络,所以我想知道是否可以在不同大小的图像(不同的像素和比率)上训练和测试模型。通常你只会下采样或上采样,这是我不想做的。我听
我正在研究 CNN 特征的早期和晚期融合。我从 CNN 的多层中获取了特征。对于早期融合,我捕获了三个不同层的特征,然后水平连接它们 F= [F1' F2' F3']; 对于后期融合,我正在阅读此 p
我是一名优秀的程序员,十分优秀!