Keras实践笔记3——全连接层基础

1from keras.models import Sequential 2from keras.layers import Dense, initializers 3from keras.optimizers import SGD 4from keras.datasets import mnist 5from keras.utils import np_utils 6 7(X_train, y_train), (X_test, y_test) = mnist.load_data() 8X_train = X_train.reshape(60000, 784) 9X_test = X_test.reshape(10000, 784) 10X_train = X_train.astype('float32') 11X_test = X_test.astype('float32') 12X_train /= 255 13X_test /= 255 14Y_Train = np_utils.to_categorical(y_train, 10) 15Y_Test = np_utils.to_categorical(y_test, 10) 16 17model = Sequential() 18model.add(Dense(output_dim=625, input_dim=784, activation='sigmoid')) 19model.add(Dense(output_dim=625, input_dim=625, activation='sigmoid')) 20model.add(Dense(output_dim=10, input_dim=625, activation='softmax')) 21model.compile(optimizer=SGD(lr=0.05), loss='categorical_crossentropy', metrics=['accuracy']) 22model.summary() 23 24history = model.fit(X_train, Y_Train, nb_epoch=100, batch_size=128, verbose=1) 25 26 27 28_________________________________________________________________ 29Layer (type) Output Shape Param # 30================================================================= 31dense_1 (Dense) (None, 625) 490625 32_________________________________________________________________ 33dense_2 (Dense) (None, 625) 391250 34_________________________________________________________________ 35dense_3 (Dense) (None, 10) 6260 36================================================================= 37Total params: 888,135 38Trainable params: 888,135 39Non-trainable params: 0

这个示例是用3层全连接层来做mnist数据集的训练,首先上来的是2层sigmoid激活函数的全连接层,里面有有个新出现的参数(上面的代码去掉了,也就是里面的kernel_initializer这个参数,不过这里也记一下笔记),kernel_initializer=initializers.normal,这是keras提供的初始化训练参数权重的功能,全连接层默认是glorot_uniform。Glorot均匀分布初始化方法,又成Xavier均匀初始化,而这里选用的normal本质上用的是RandomNormal ,也就是正态分布初始化

在这个示例里面,最后一个新面孔就是SGD函数里面的lr参数了,这个参数指定了SGD的学习速率,也就是权重调整速率,下降的太快可能会越过了最优值,太小又会导致下降的太慢

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

Keras实践笔记3——全连接层基础 - HelloWorld