秃头小宝贝127 2021-02-08 23:17 采纳率: 33.3%
浏览 964
已采纳

深度学习准确率很低的原因

代码如下:
#使用keras训练一个深度神经网络
#MNIST数据集预处理
#
import numpy as np
np.random.seed(1337)
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test)=mnist.load_data()
img_rows,img_cols=28,28
X_train=X_train.reshape(X_train.shape[0],img_rows,img_cols,1)
X_test=X_test.reshape(X_test.shape[0],img_rows,img_cols,1)
input_shape=(img_rows,img_cols,1)
#确保矩阵中的数字是【0,1】之间的32位浮点型,而不是【0,255】之间的无符号整数
X_train=X_train.astype('float32')/255.0
X_test=X_test.astype('float32')/255.0
#对训练标签进行独热编码
from keras.utils import np_utils
n_classes=10
y_train=np_utils.to_categorical(y_train,n_classes)
y_test=np_utils.to_categorical(y_test,n_classes)
#创建一个卷积神经网络
from keras.models import Sequential
model=Sequential()
from keras.layers import Convolution2D
n_filters=32
kernel_size=(3,3)
model.add(Convolution2D(n_filters,kernel_size[0],kernel_size[1],padding='valid',input_shape=input_shape))
#使用一个修正线性单元作为激活函数
from keras.layers import Activation
model.add(Activation('relu'))
#
model.add(Convolution2D(n_filters,kernel_size[0],kernel_size[1]))
model.add(Activation('relu'))
#对激活步骤进行池化并添加一个Dropout层
from keras.layers import MaxPooling2D,Dropout
pool_size=(2,2)
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(0.25))
#
from keras.layers import Flatten,Dense
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(n_classes))
model.add(Activation('softmax'))
#
model.compile(loss='categorical_crossentropy',optimizer='adadelta',metrics=['accuracy'])
#拟合模型
model.fit(X_train,y_train,batch_size=128,epochs=12,verbose=1,validation_data=(X_test,y_test))
print(model.evaluate(X_test,y_test,verbose=0))

结果:

  • 写回答

1条回答 默认 最新

  • coagenth 2021-02-09 10:18
    关注

    有二个地方要改一下,

    kernel_size[0],kernel_size[1]->kernel_size,要以元组形式参数传入.

    运行的片断,准确率在98%左右:

    Epoch 3/12
    60000/60000 [==============================] - 316s 5ms/step - loss: 0.0807 - accuracy: 0.9753 - val_loss: 0.0363 - val_accuracy: 0.9884

    >>> keras.__version__
    '2.3.1'

    >>> tensorflow.__version__
    '2.2.0'

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?