[keras]1.多层感知机实现

“`
创建于星期二星期六14:42:13 2018 @author:yuyangyg“”“#baseline MLP for mnist dataset import numpy from keras.datasets import mnist from keras.models import从keras.layers导入序列从keras.layers进口密度从keras.utils进口退出进口np_utils#修复随机种子的重现性#seed = 7#numpy.random.seed(seed)#load data(X_train,y_train),(X_test,y_test)= mnist.load_data() #将28 * 28图像平铺为每个图像的784矢量num_pixels = X_train.shape [1] * X_train.shape [2] X_train = X_train.reshape(X_train.shape [0],num_pixels).type(“float32 “)X_test = X_test.reshape(X_test.shape [0],num_pixels).astype(”float32“)#将输入从0-255归一化为0-1 X_train = X_train / 255 X_test = X_test / 255#一个热门编码输出将标签变为向量y_train = np_utils.to_categorical(y_train)y_test = np_utils.to_categorical(y_test)num_classes = y_test.shape [1] #define baseline model def baseline_model(): #crea te模型

model = Sequential()
model.add(Dense(num_pixels,input_dim = num_pixels,kernel_initializer =“normal”,activation =“relu”))
model.add(Dense(num_classes,kernel_initializer =“normal”,activation =“softmax”) )    #编译模型    model.compile(loss =“categorical_crossentropy”,optimizer =“adam”,metrics = [“accuracy”])    return model #建立模型模型= baseline_model()#拟合模型model.fit(X_train,y_train ,validation_data =(X_test,y_test),epochs = 10,batch_size = 200,verbose = 2)#最终评估模型评分= model.evaluate(X_test,y_test,verbose = 0)print(“Baseline Error:%。2f %% “%(100  - 分数[1] * 100))```
  • 1s - 损失:0.0250 - ACC:0.9937 - VAL _ ACC:0.9788大纪元7月10日 - 1秒 - 损失:0.0192 - ACC:0.9952 - VAL _ ACC: 0.9797大纪元8/10 - 1秒 - 损失:0.0145 - ACC:0.9967 - VAL 损失:0.0578 - VAL ACC:0.9818大纪元9月10日 - 1秒 - 损失:0.0117 - VAL 损失:0.0653 - VAL ACC:0.9798 大纪元10/10 - 1秒-损失:0.0078 - ACC:0.9984 - val_loss:0.0588 - val_acc:0.9827 基线误差:1.73%“`

2.二维卷积层Conv2D keras.layers。 convolutional.Conv2D(过滤器,内核大小,步幅=(1,1),填充= ‘有效’,数据格式=无,扩张率=(1,1),活化=无,使用偏压=真, kernel _ initializer =’glorot _ uniform’,偏见

_initializer=’zeros’, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

二维卷积层对二维输入进行滑动窗卷积,当使用该层作为第一层时,应提供input_shape参数。

filters:卷积核的数目;

kernel_size:卷积核的尺寸;

strides:卷积核移动的步长,分为行方向和列方向;

padding:边界模式,有“valid”,“same”或“full”,full需要以theano为后端;

其他参数请参看Keras官方文档。

  1. 二维池化层MaxPooling2D
    keras.layers.pooling.MaxPooling2D(pool_size=(2,2), strides=None, padding=’valid’, data_format=None)

对空域信号进行最大值池化。

pool_size:池化核尺寸;

strides:池化核移动步长;

padding:边界模式,有“valid”,“same”或“full”,full需要以theano为后端;

其他参数请参看Keras官方文档。

  1. Activation层
    keras.layers.core.Activation(activation)

激活层对一个层的输出施加激活函数。

预定义激活函数:

softmax,softplus,softsign,relu,tanh,sigmoid,hard_sigmoid,linear等。

  1. Dropout层
    keras.layers.core.Dropout(p)

为输入数据施加Dropout。Dropout将在训练过程中每次更新参数时随机断开一定百分比(p)的输入神经元连接,Dropout层用于防止过拟合。

  1. Flatten层
    keras.layers.core.Flatten()

Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。

例子:

model =Sequential()

model.add(Convolution2D(64,3, 3, border_mode=’same’, input_shape=(3, 32, 32)))

now:model.output_shape == (None, 64, 32, 32)

model.add(Flatten())

now:model.output_shape == (None, 65536)

7.Dense层全连接层
keras.layers.core.Dense(units,activation=None, use_bias=True, kernel_initializer=’glorot_uniform’,bias_initializer=’zeros’, kernel_regularizer=None, bias_regularizer=None,activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

units:输出单元的数量,即全连接层神经元的数量,作为第一层的Dense层必须指定input_shape。

  1. Sequential模型compile方法
    compile(self,optimizer, loss, metrics=[], sample_weight_mode=None)

编译用来配置模型的学习过程,其参数有:

optimizer:字符串(预定义优化器名)或优化器对象;

loss:字符串(预定义损失函数名)或目标函数;

metrics:列表,包含评估模型在训练和测试时的网络性能的指标,典型用法是metrics=[‘accuracy’];

  1. Sequential模型fit方法
    fit(self,x, y, batch_size=32, epochs=10, verbose=1, callbacks=None,validation_split=0.0, validation_data=None, shuffle=True, class_weight=None,sample_weight=None, initial_epoch=0)

verbose:日志显示,0为不在标准输出流输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录;

validation_split:0~1之间的浮点数,用来指定训练集的一定比例数据作为验证集。验证集将不参与训练,并在每个epoch结束后测试的模型的指标,如损失函数、精确度等;

validation_data:形式为(X,y)的tuple,是指定的验证集。此参数将覆盖validation_spilt。

  1. Sequential模型evaluate方法
    evaluate(self,x, y, batch_size=32, verbose=1, sample_weight=None)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值