📜  Keras-模型(1)

📅  最后修改于: 2023-12-03 15:17:08.184000             🧑  作者: Mango

Keras模型介绍

Keras是一个高度模块化且易于扩展的深度学习库,它可以用来搭建神经网络模型,并且可以在常见的深度学习架构中进行无缝集成。其设计哲学是尽量减少用户与底层运算的接触,并提供简单易用的高级别API。

安装Keras

要安装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模型搭建

Keras提供了两种搭建模型的方式:Sequential模型和Functional API。Sequential模型用于搭建简单的单输入、单输出的模型,而Functional API则可以搭建更加复杂的模型。

Sequential模型

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

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个随机的输入数据,并通过模型预测它们的输出。