文章目录
- 简介和安装
- 创建模型
简介和安装
Keras号称是面向人类的深度学习库,有着优雅的API设计,并且可以自由切换后端框架,从而一套代码,可以在pytorch, tensorflow以及jax生态中完美使用。当然,一拖三肯定不能尽善尽美,keras3对三大后端的兼容性为tensorflow2.16.1,torch2.1.0以及jax0.4.20。实测torch2.11不兼容,jax0.6.2兼容。
pip安装即可
pip install keras -i https://pypi.tuna.tsinghua.edu.cn/simple由于支持不同的后端,所以在import之前,需要通过更改环境变量的方式,修改keras的后端框架,例如使用jax后端
importos os.environ["KERAS_BACKEND"]="jax"importkeras创建模型
官方教程提供了MNIST数字分类的示例
importnumpyasnp(x_train,y_train),(x_test,y_test)=keras.datasets.mnist.load_data()x_train=x_train.astype("float32")/255x_test=x_test.astype("float32")/255# 新增一个维度x_train=np.expand_dims(x_train,-1)x_test=np.expand_dims(x_test,-1)print("x_train shape:",x_train.shape)print("y_train shape:",y_train.shape)print(x_train.shape[0],"train samples")print(x_test.shape[0],"test samples")# Model parametersnum_classes=10input_shape=(28,28,1)model=keras.Sequential([keras.layers.Input(shape=input_shape),keras.layers.Conv2D(64,(3,3),activation="relu"),keras.layers.Conv2D(64,(3,3),activation="relu"),keras.layers.MaxPooling2D((2,2)),keras.layers.Conv2D(128,(3,3),activation="relu"),keras.layers.Conv2D(128,(3,3),activation="relu"),keras.layers.GlobalAveragePooling2D(),keras.layers.Dropout(0.5),keras.layers.Dense(num_classes,activation="softmax"),])model.summary()┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ ┃ Layer(type)┃ Output Shape ┃ Param# ┃┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ conv2d(Conv2D)│(None,26,26,64)│640│ ├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤ │ conv2d_1(Conv2D)│(None,24,24,64)│36,928│ ├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤ │ max_pooling2d(MaxPooling2D)│(None,12,12,64)│0│ ├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤ │ conv2d_2(Conv2D)│(None,10,10,128)│73,856│ ├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤ │ conv2d_3(Conv2D)│(None,8,8,128)│147,584│ ├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤ │ global_average_pooling2d │(None,128)│0│ │(GlobalAveragePooling2D)│ │ │ ├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤ │ dropout(Dropout)│(None,128)│0│ ├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤ │ dense(Dense)│(None,10)│1,290│ └──────────────────────────────────────┴─────────────────────────────┴─────────────────┘