📅  最后修改于: 2023-12-03 15:17:08.184000             🧑  作者: Mango
Keras是一个高度模块化且易于扩展的深度学习库,它可以用来搭建神经网络模型,并且可以在常见的深度学习架构中进行无缝集成。其设计哲学是尽量减少用户与底层运算的接触,并提供简单易用的高级别API。
要安装Keras,可以使用pip,只需运行以下命令:
pip install keras
Keras依赖于TensorFlow、Theano或CNTK作为后端,可以通过以下方式指定默认后端:
# 通过修改keras.json文件
{
"backend": "tensorflow",
"image_data_format": "channels_last",
"floatx": "float32",
"epsilon": 1e-7
}
# 或者在代码中设置环境变量
import os
os.environ['KERAS_BACKEND'] = 'tensorflow'
Keras提供了两种搭建模型的方式:Sequential模型和Functional API。Sequential模型用于搭建简单的单输入、单输出的模型,而Functional API则可以搭建更加复杂的模型。
Sequential模型使用非常简单,只需要按照顺序添加层即可,以下是一个简单的例子:
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(32, activation='relu', input_shape=(784,)))
model.add(Dense(10, activation='softmax'))
model.summary()
这里我们搭建了一个两层神经网络模型,输入层有784个神经元,隐藏层有32个神经元,输出层有10个神经元。
Functional API则适用于更为复杂的模型,可以构建多输入、多输出的模型,这里是一个简单的例子:
from keras.layers import Input, Dense
from keras.models import Model
inputs = Input(shape=(784,))
x = Dense(32, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
output1 = Dense(10, activation='softmax')(x)
output2 = Dense(1, activation='sigmoid')(x)
model = Model(inputs=inputs, outputs=[output1, output2])
model.summary()
这里我们搭建了一个两个输出的模型,其中第一个输出有10个神经元,第二个输出只有一个神经元。
编译模型需要使用compile函数,需要指定损失函数、优化器和评价指标:
model.compile(loss='categorical_crossentropy',
optimizer='adadelta',
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=128,
epochs=20,
verbose=1,
validation_data=(x_test, y_test))
这里我们使用交叉熵损失函数、Adadelta优化器,并且在训练过程中监控精度指标。
使用evaluate函数可以对模型进行评估:
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
使用predict函数对新数据进行预测:
import numpy as np
x_new = np.random.rand(10, 784)
y_new = model.predict(x_new)
print(y_new)
这里我们生成了10个随机的输入数据,并通过模型预测它们的输出。