Keras,构建神经网络的Python专家!
嗨,小伙伴们好呀!圆圆今天要和大家分享一个超级有趣的深度学习工具 - Keras!它就像是搭积木一样,让我们能轻松地构建各种神经网络模型。如果说TensorFlow是一辆复杂的跑车,那Keras就是这辆跑车上最友好的驾驶界面,让我们能轻松驾驭深度学习的世界!
1. Keras是什么
Keras已经内置在TensorFlow 2.0中啦,我们直接导入就能用:
```python
import tensorflow as tf
from tensorflow import keras
# 检查版本
print(tf.__version__)
print(keras.__version__)
小贴士:现在主流的Keras都是TensorFlow的一部分啦,不需要单独安装!
2. 模型搭建:像搭积木一样简单
Keras提供了两种创建模型的方式:Sequential(顺序模型)和Functional(函数式API)。我们先来看最简单的Sequential模型:
python
# 创建一个简单的图片分类模型
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)), # 输入层,展平28x28的图片
keras.layers.Dense(128, activation='relu'), # 隐藏层,128个神经元
keras.layers.Dropout(0.2), # 防止过拟合
keras.layers.Dense(10, activation='softmax') # 输出层,10个类别
])
# 编译模型
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
注意事项:每一层的神经元数量就像调料的用量,需要根据实际问题来调整哦!
3. 实战:手写数字识别
让我们用MNIST数据集来训练一个手写数字识别模型:
python
# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 数据预处理
x_train = x_train / 255.0 # 归一化到0-1之间
x_test = x_test / 255.0
# 训练模型
history = model.fit(
x_train, y_train,
epochs=5,
validation_data=(x_test, y_test)
)
# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率:{test_acc:.4f}')
4. 模型保存与加载
训练好的模型当然要保存下来啦:
python
5. 自定义层和损失函数
Keras还允许我们创建自己的层和损失函数:
python
# 自定义层
class MyLayer(keras.layers.Layer):
def __init__(self, units=32):
super(MyLayer, self).__init__()
self.units = units
def build(self, input_shape):
self.w = self.add_weight(
shape=(input_shape[-1], self.units),
initializer='random_normal',
trainable=True
)
def call(self, inputs):
return tf.matmul(inputs, self.w)
# 使用自定义层
model = keras.Sequential([
MyLayer(64),
keras.layers.Activation('relu')
])
6. 实用小技巧
模型可视化:
python
回调函数:
python
# 早停策略
early_stopping = keras.callbacks.EarlyStopping(
monitor='val_loss',
patience=3
)
# 使用回调函数训练
model.fit(x_train, y_train,
epochs=10,
callbacks=[early_stopping])
练习小题
尝试修改模型结构,增加或减少层数,看看准确率会有什么变化?
使用Keras构建一个简单的图片分类器,识别猫狗图片。
尝试使用不同的优化器(如SGD、RMSprop),比较它们的性能差异。
小伙伴们,今天的Python学习之旅就到这里啦!Keras真的是深度学习入门的最佳助手,它让复杂的神经网络变得简单易用。记得动手敲代码,有问题随时在评论区问圆圆哦。祝大家学习愉快,Python学习节节高!
领取专属 10元无门槛券
私享最新 技术干货