keras的使用

1138-魏同学

发表文章数:75

热门标签

首页 » 算法 » 正文

如何用keras构建网络模型:
keras的使用
以手写数字为例,假设输入图片,可以看出输入是28X28的向量。输出是10维的(数字0-9)中间有两个隐层,每个隐层有500个神经元。用keras的做法:
第一步网络构造
1、定义一个模型(此处简单结构模型(定义模型的方法之一),按顺序一层一层训练,没有环形结构)

model = Sequential()

2、加第一个隐层(add)

model.add(Dense(input_dim = 28*28,units = 500,activation = 'relu'))

2、加第二个隐层(add)

model.add(Dense(units = 500,activation = 'relu'))

加第二个layer的时候就不需要说明input_dim(dimension尺寸)
3、output layer
最后一个layer,是有10维

model.add(Dense(units = 10,activation = 'softmax'))

第二步(做配置)
model.compile()方法用于在配置训练方法时,告知训练时用的优化器、损失函数和准确率评测标准。

model.compile(loss = 'categorical_crossentropy',
optimizer = 'adam',metrics = ['accuracy'])

model.compile(optimizer = 优化器,

                    loss = 损失函数,

                    metrics = ["准确率”])

其中:
optimizer可以是字符串形式给出的优化器名字,也可以是函数形式,使用函数形式可以设置学习率、动量和超参数。
例如:
keras的使用
keras的使用
keras的使用
代码示例:


model.compile(  #使用model.compile()方法来配置训练方法
    optimizer = tf.keras.optimizers.SGD(lr = 0.1), #使用SGD优化器,学习率为0.1
    loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False), #配置损失函数
    metrics = ['sparse_categorical_accuracy'] #标注网络评价指标
)

第三步(训练模型,找出最好函数)

model.fit(x_train,y_train,batch_size = 100,epochs = 20)

读取和存储model
keras模型存储和取用
模型的使用(testing)
case 1、

score = model.evaluate(x_test,y_test)
print('Total loss on Testing Set:',score[0])
print('Accuracy of Testing Set:',score[1])

case 2、

result = model.predict(x_test)

手写数字完整代码

import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers import Conv2D, MaxPooling2D, Flatten
from keras.optimizers import SGD, Adam
from keras.utils import np_utils
from keras.datasets import mnist
​
# categorical_crossentropy
def load_data():  
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    number = 10000
    x_train = x_train[0:number]
    y_train = y_train[0:number]
    x_train = x_train.reshape(number, 28 * 28)
    x_test = x_test.reshape(x_test.shape[0], 28 * 28)
    x_train = x_train.astype('float32')
    x_test = x_test.astype('float32')
    # convert class vectors to binary class matrices
    y_train = np_utils.to_categorical(y_train, 10)
    y_test = np_utils.to_categorical(y_test, 10)
    x_train = x_train
    x_test = x_test
    # x_test=np.random.normal(x_test)
    x_train = x_train / 255
    x_test = x_test / 255return (x_train, y_train), (x_test, y_test)
​
​
if __name__ == '__main__':
    # load training data and testing data
    (x_train, y_train), (x_test, y_test) = load_data()# define network structure
    model = Sequential()
​
    model.add(Dense(input_dim=28*28, units=500, activation='sigmoid'))
    model.add(Dense(units=500, activation='sigmoid'))
    model.add(Dense(units=10, activation='softmax'))# set configurations
    model.compile(loss='categorical_crossentropy',
                  optimizer='adam', metrics=['accuracy'])# train model
    model.fit(x_train, y_train, batch_size=100, epochs=20)# evaluate the model and output the accuracy
    result = model.evaluate(x_test, y_test)
    print('Test Acc:', result[1])
标签:

未经允许不得转载:作者:1138-魏同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《keras的使用》 发布于2020-11-09

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录