搭建Ananconda环境和安装软件包教程如下:
一篇文章带你告别 Could not find a version that satisfies the requirement XXX
pip install keras
pip install tensorflow
from keras.datasets import mnist
(train_images, train_labels) , (test_images, test_labels) = mnist.load_data()
from keras import models
from keras import layers
network = models.Sequential()
network.add(layers.Dense(512,activation='relu',input_shape=(28*28,)))
network.add(layers.Dense(10,activation='softmax'))
from keras.datasets import mnist
(train_images, train_labels) , (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000,28*28))
train_images = train_images.astype('float32')/255
test_images = test_images.reshape((10000,28*28))
test_images = test_images.astype('float32')/255
from keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
from keras.datasets import mnist
(train_images, train_labels) , (test_images, test_labels) = mnist.load_data()
from keras import models
from keras import layers
network = models.Sequential()
network.add(layers.Dense(512,activation='relu',input_shape=(28*28,)))
network.add(layers.Dense(10,activation='softmax'))
network.compile(optimizer='rmsprop',
loss= 'categorical_crossentropy',
metrics='accuracy')
train_images = train_images.reshape((60000,28*28))
train_images = train_images.astype('float32')/255
test_images = test_images.reshape((10000,28*28))
test_images = test_images.astype('float32')/255
from keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
if __name__ == '__main__':
network.fit(train_images,train_labels,epochs= 5, batch_size= 128)
test_loss,test_acc =network.evaluate(test_images,test_labels)
print('test_acc:',test_acc)
Epoch 1/5
469/469 [==============================] - 3s 5ms/step - loss: 0.2667 - accuracy: 0.9239
Epoch 2/5
469/469 [==============================] - 3s 5ms/step - loss: 0.1056 - accuracy: 0.9691
Epoch 3/5
469/469 [==============================] - 2s 5ms/step - loss: 0.0701 - accuracy: 0.9789
Epoch 4/5
469/469 [==============================] - 2s 5ms/step - loss: 0.0501 - accuracy: 0.9848
Epoch 5/5
469/469 [==============================] - 3s 5ms/step - loss: 0.0376 - accuracy: 0.9888
313/313 [==============================] - 1s 2ms/step - loss: 0.0704 - accuracy: 0.9784
test_acc: 0.9783999919891357
重新定义网络
network = models.Sequential()
network.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)))
network.add(layers.MaxPool2D(2,2))
network.add(layers.Conv2D(64,(3,3),activation='relu'))
network.add(layers.MaxPool2D(2,2))
network.add(layers.Conv2D(64,(3,3),activation='relu'))
network.add(layers.Flatten())
network.add(layers.Dense(64,activation='relu'))
network.add(layers.Dense(10,activation='softmax'))
进行验证
test_acc: 0.9901999831199646
密集连接层和卷积层的根本区别在于Dense层从输入特征中学到的是全局模式的,而卷积更能学习到局部模式的信息。