keras的简单介绍

Keras和TensorFlow

keras是一个用Python写的深度学习API,它运行在机器学习平台TensorFlow上。换句话说,Keras是接口(Interface),TensorFlow是平台(Platform)。

使用keras,需要导入一些基本的包:

import numpy as np
import tensorflow as tf
from tensorflow import keras
# TensorFlow2.0以后采用tensorflow.keras
from tensorflow.keras import layers

Keras的核心数据结构是layers(层)和models(模型)。

最简单的model是Sequential model(顺序模型),Sequential是layers的线性堆叠。构建一个Sequential model:

from tensorflow.keras.models import Sequential
model = Sequential()

使用.add()来向model中堆叠layers,keras的layers有(常用):核心层Core layers, 卷积层Convolution layers, 池化层Pooling layers, 正则化层Regularization layers, 激活层Activation layers等等。

from tensorflow.keras.layers import Dense
# keras的core layers包括Dense layer, Activation layer, Embedding layer, Masking layer, Lambda layer
# 这里用Dense layer

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

设置好model后,就可以使用.compile()来配置学习过程:

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

使用.fit()来分批迭代训练数据:

# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API.
model.fit(x_train, y_train, epochs=5, batch_size=32)

使用.evaluate()来评估测试loss和metrics:

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

使用.predict()来预测新的结果

classes = model.predict(x_test, batch_size=128)

构建好的model可以使用.summary()来查看其层次结构

'''
model.summary() #之前必须要执行.build或者.fit,因为不交代input无法显示模型的层次结构
model.build((None,28, 28))
model.fit(x_train, y_train, epochs=5, batch_size=32)
'''
model.summary()

上述model执行.summary完毕后的效果如下图:
model.summary()
也可以将model的层次结构导出为图片:

keras.utils.plot_model(model, "my_first_model.png")
# show_shapes=True表示显示input和output大小
keras.utils.plot_model(model, "my_first_model_with_shape_info.png", show_shapes=True)


show_shapes=True

总结

我也是初学者,我自己也创造不出来一个CNN或者其他复杂的model,最常用的做法是根据现有的别人已经训练好的模型,再修改为适合自己的模型就足够了。

如何做到修改为适合自己的模型,这就需要判断自己的model需要哪些layer,input和output数据大小是多少,迭代次数等等。

我之前跑过一个手势识别的代码,其模型的建立只有几行代码,而大量的步骤是数据的预处理,所以如何对数据进行预处理才是深度学习的难点。

模型的建立
效果如下:
在这里插入图片描述

一起学深度学习,微信公众号会记录我学习keras的过程,不只是学习笔记,还会写一些自己当程序员的感悟和分享。

在这里插入图片描述

Keras 是一个高级的深度学习 API,适用于 Python 编程语言。它被设计成一个用户友好、模块化、可扩展和可维护的 API,能够快速地将原型设计转换成可部署的生产模型。 以下是一个简单的使用 Keras 的例子,用于训练一个基本的神经网络模型,以识别手写数字: ```python # 导入必要的库和模块 import numpy as np from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten from keras.layers import Conv2D, MaxPooling2D from keras.utils import np_utils from keras.datasets import mnist # 加载 MNIST 数据集,并进行预处理 (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(X_train.shape[0], 28, 28, 1) X_test = X_test.reshape(X_test.shape[0], 28, 28, 1) X_train = X_train.astype('float32') X_test = X_test.astype('float32') X_train /= 255 X_test /= 255 Y_train = np_utils.to_categorical(y_train, 10) Y_test = np_utils.to_categorical(y_test, 10) # 定义神经网络模型的架构 model = Sequential() model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(10, activation='softmax')) # 编译模型并指定优化器、损失函数和评估指标等 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型并评估模型在测试数据上的表现 model.fit(X_train, Y_train, batch_size=128, epochs=10, verbose=1, validation_data=(X_test, Y_test)) score = model.evaluate(X_test, Y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1]) ``` 这个例子中,我们使用 Keras 加载了 MNIST 数据集,并进行了预处理。然后,我们定义了一个卷积神经网络模型的架构,包括卷积层、池化层、全连接层和 Dropout 层等。接着,我们编译了模型并指定了优化器、损失函数和评估指标等。最后,我们训练了模型并评估了模型在测试数据上的表现。 Keras 的优点是易于上手、快速实现原型、可扩展性好,因此被广泛用于深度学习教育、研究和工业应用中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值