机器学习helloworld(实例)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yyoc97/article/details/80088107

keras mnist实例

相信准备入坑机器学习的朋友们,大多数刚开始看着众多的数学公式,会有种想放弃的挫败感!至少我是这样的。坚持下来,找到适合的方式,相信很快你也会写出自己机器学习的 helloworld!入坑指南 提取密码:5s0u

  • keras简介
    是一个高层神经网络API,简易和快速的原型设计。好处在于可以很快地实现网络模型的搭建,数据输入输出也很方便,不像tf那样各种编码解码才能输入数据,让用户专注于网络模型本身,而不是花大量时间去学tf那些构建图的各种编程套路。

  • mnist
    MNIST数据库可从此页面获得,其中包含60,000个示例的训练集以及10,000个示例的测试集。 它是NIST提供的更大集合的子集。 这些数字已经过尺寸标准化并以固定尺寸的图像为中心。
    里面分别是训练图,训练标签,测试图,测试标签。将其下载下来。

  • dome

import gzip
import os
import struct
import numpy as np

from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import SGD
from tensorflow.examples.tutorials.mnist import input_data

if __name__ == '__main__':
    model1 = Sequential()  # 顺序模型
    model.add(Dense(input_dim=28 * 28, output_dim=500))
    model.add(Activation('sigmoid'))
    model.add(Dense(output_dim=500))
    model.add(Activation('sigmoid'))
    model.add(Dense(output_dim=10))
    model.add(Activation('softmax'))

    # 这里我们选择交叉熵损失函数 
    model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.1), metrics=['accuracy'])
    #选择你下载的包路径
    mnist = input_data.read_data_sets("/Users/dongsheng/Downloads/mnist/", one_hot=True)

    x_train, y_train = mnist.train.images, mnist.train.labels
    x_test, y_test = mnist.test.images, mnist.test.labels
    # x_train = x_train.reshape(-1, 784).astype('float32')
    # x_test = x_test.reshape(-1, 784).astype('float32')

    model.fit(x_train, y_train, batch_size=100, nb_epoch=20)
    loss_and_metrics = model1.evaluate(x_test, y_test)

为什么选择 交叉熵

  • 运行效果
    这里写图片描述

  • 采坑
    1.网上很多例子使用直接使用X_train,官网的快速入门就是如此。是因为可以通过联网获取。不过这种方式受到网络限制,或者是load超时。大多数玩家都是不行的。我们理解X_train怎么来的就好。
    (X_train, y_train), (X_test, y_test) = mnist.load_data()

    2.expected activation_3 to have shape (10,) but got array with shape (1,) 因为读取文件的方式问题,或者是有些修改变量类型。列如:x_train = x_train.reshape(-1, 28,28,1).astype('float32')
    这样也是报错的。不过修改为x_train = x_train.reshape(-1, 784).astype('float32')又不会报错了。

猜你喜欢

转载自blog.csdn.net/yyoc97/article/details/80088107