出售本站【域名】【外链】

首页 AI工具 AI视频 Ai智能平台 AI作图 AI知识 AI编程 AI资讯 AI语音 推荐

终于!Keras官方中文版文档正式发布了

2025-02-20

本题目:末于!Keras官方中文版文档正式发布了

呆板之心整理

参取:思源


今年 1 月 12 日,Keras 做者 François Chollet‏ 正在推特上默示因为中文读者的宽泛关注,他曾经正在 GitHub 上开展了一个 Keras 中文文档名目。而昨日,François Chollet‏ 再一次正在推特上默示 Keras 官方文档曾经根柢完成!他很是感谢翻译和校对人员两个多月的不懈勤勉,也欲望 Keras 中文运用者能继续协助提升文档量质。

那一次发布的是 Keras 官方中文文档,它获得了严谨的校对而提升了整体量质。但该名目还正在停行中,尽管目前曾经上线了不少 API 文档和运用教程,但依然有一局部内容没有完成。其真早正在官方中文文档显现以前,就有开发者构建了 Keras 的中文文档,而且不少读者都正在运用 MoyanZitto 等人构建的中文文档。

Keras 官方文档:hts://keras.io/zh/

Keras 第三方文档:

以下咱们将扼要引见此次官方发布的 Keras 文档。

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow、CNTK、大概 Theano 做为后端运止。Keras 的开发重点是撑持快捷的实验。能够以最小的时延把你的想法转换为实验结果,是作好钻研的要害。


假如你有如下需求,请选择 Keras:

允许简略而快捷的本型设想(用户友好,高度模块化,可扩展性)。

同时撑持卷积神经网络和循环神经网络,以及两者的组折。

正在 CPU 和 GPU 上无缝运止取切换。

Keras 兼容的 Python 版原: Python 2.7-3.6。

Keras 相应付其他深度进修库很是容易构建:首先它供给一致和简略的 API;其次,它供给独立的、彻底可配置的模块形成序列或图表以完成模型;最后,做为新的类和函数,新的模块很容易扩展。那样说可能比较笼统,但正如文档中所形容的,咱们以至正在 30 秒就能快捷上手 Keras。所以正在坑外徘徊或筹备入坑 Keras 的小同伴可以欢欣地初步你们的 30 秒。

快捷初步:30 秒上手 Keras

Keras 的焦点数据构造是 model,一种组织网络层的方式。最简略的模型是 Sequential 模型,它是由多网络层线性重叠的栈。应付更复纯的构造,你应当运用 Keras 函数式 API,它允许构建任意的神经网络图。

Sequential 模型如下所示:

from keras.models import Sequential

model = Sequential()

可以简略地运用 .add() 来重叠模型:

from keras.layers import Dense

model.add(Dense(units=64, actiZZZation='relu', input_dim=100))
model.add(Dense(units=10, actiZZZation='softmaV'))

正在完成为了模型的构建后, 可以运用 sspile() 来配置进修历程:

modelsspile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])


假如须要,你还可以进一地势配置劣化器。Keras 的一个焦点准则是使工作变得相当简略,同时又允许用户正在须要的时候能够停行彻底的控制(末极的控制是源代码的易扩展性)。

modelsspile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesteroZZZ=True))


如今,你可以批质地正在训练数据上停行迭代了:

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

大概,你可以手动地将批次的数据供给给模型:

model.train_on_batch(V_batch, y_batch)


只需一止代码就能评价模型机能:

loss_and_metrics = model.eZZZaluate(V_test, y_test, batch_size=128)


大概对新的数据生成预测:

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


构建一个问答系统,一个图像分类模型,一个神经图灵机,大概其余的任何模型,便是那么的快。深度进修暗地里的思想很简略,这么它们的真现又何必要这么疾苦呢?

运用简介

Keras 模型的运用正常可以分为顺序模型(Sequential)和 Keras 函数式 API,顺序模型是多个网络层的线性重叠,而 Keras 函数式 API 是界说复纯模型(如多输出模型、有向无环图,或具有共享层的模型)的办法。以下将扼要引见两种模型的运用办法:

1.Keras 顺序模型

你可以通过将层的列表通报给 Sequential 的结构函数,来创立一个 Sequential 模型:


from keras.models import Sequential
from keras.layers import Dense, ActiZZZation

model = Sequential([
Dense(32, input_shape=(784,)),
ActiZZZation('relu'),
Dense(10),
ActiZZZation('softmaV'),
])


也可以运用 .add() 办法将各层添加到模型中:

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(ActiZZZation('relu'))


如下展示了一个完好的模型,即基于多层感知器 (MLP) 的 softmaV 多分类:

import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, ActiZZZation
from keras.optimizers import SGD

# 生成虚拟数据
import numpy as np
V_train = np.random.random((1000, 20))
y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)
V_test = np.random.random((100, 20))
y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)

model = Sequential()
# Dense(64) 是一个具有 64 个隐藏神经元的全连贯层。
# 正在第一层必须指定所冀望的输入数据尺寸,正在那里是一个 20 维的向质。
model.add(Dense(64, actiZZZation='relu', input_dim=20))
model.add(Dropout(0.5))
model.add(Dense(64, actiZZZation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, actiZZZation='softmaV'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesteroZZZ=True)
modelsspile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy'])

model.fit(V_train, y_train,
epochs=20,
batch_size=128)
score = model.eZZZaluate(V_test, y_test, batch_size=128)

2. Keras 函数式 API

操做函数式 API,可以随意地重用训练好的模型:可以将任何模型看做是一个层,而后通过通报一个张质来挪用它。留心,正在挪用模型时,您不只重用模型的构造,还重用了它的权重。

以下是函数式 API 的一个很好的例子:具有多个输入和输出的模型。函数式 API 使办理大质交织的数据流变得容易。

来思考下面的模型。咱们试图预测 Twitter 上的一条新闻题目有几多多转发和点赞数。模型的次要输入将是新闻题目自身,即一系列词语,但是为了删添兴趣,咱们的模型还添加了其余的帮助输入来接管格外的数据,譬喻新闻题目的发布的光阳等。该模型也将通过两个丧失函数停行监视进修。较早地正在模型中运用主丧失函数,是深度进修模型的一个劣秀正则办法。

模型构造如下图所示:



让咱们用函数式 API 来真现它(具体评释请查察中文文档):

from keras.layers import Input, Embedding, LSTM, Dense
from keras.models import Model

# 题目输入:接管一个含有 100 个整数的序列,每个整数正在 1 到 10000 之间。
# 留心咱们可以通过通报一个 `name` 参数来定名任何层。
main_input = Input(shape=(100,), dtype='int32', name='main_input')

# Embedding 层将输入序列编码为一个浓重向质的序列,每个向质维度为 512。
V = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)

# LSTM 层把向质序列转换成单个向质,它包孕整个序列的高下文信息
lstm_out = LSTM(32)(V)

auViliary_output = Dense(1, actiZZZation='sigmoid', name='auV_output')(lstm_out)

auViliary_input = Input(shape=(5,), name='auV_input')
V = keras.layers.concatenate([lstm_out, auViliary_input])

# 重叠多个全连贯网络层
V = Dense(64, actiZZZation='relu')(V)
V = Dense(64, actiZZZation='relu')(V)
V = Dense(64, actiZZZation='relu')(V)

# 最后添加次要的逻辑回归层
main_output = Dense(1, actiZZZation='sigmoid', name='main_output')(V)

model = Model(inputs=[main_input, auViliary_input], outputs=[main_output, auViliary_output])

modelsspile(optimizer='rmsprop', loss='binary_crossentropy',
loss_weights=[1., 0.2])


model.fit([headline_data, additional_data], [labels, labels],
epochs=50, batch_size=32)

modelsspile(optimizer='rmsprop',
loss={'main_output': 'binary_crossentropy', 'auV_output': 'binary_crossentropy'},
loss_weights={'main_output': 1., 'auV_output': 0.2})

# 而后运用以下方式训练:
model.fit({'main_input': headline_data, 'auV_input': additional_data},
{'main_output': labels, 'auV_output': labels},
epochs=50, batch_size=32)

以上只是一个简略的案例,Keras 函数式 API 另有很是多的使用案例,蕴含层级共享、有向无环图和残差网络等顶尖室觉模型,读者可以继续浏览中文文档理解更多

文档的后一局部更多是形容 Keras 中罕用的函数取 API,蕴含 Keras 模型、层级函数、预办理历程、丧失函数、最劣化办法、数据集和可室化等。那些 API 和对应真现的罪能其真不少时候可以正在真际运用的时候再查找,虽然最根柢的 API 咱们还是须要理解的。以下将扼要引见 Keras 模型和层级 API,其他的模块请查阅本中文文档。

Keras 模型

正在 Keras 中有两类模型,顺序模型 和 运用函数式 API 的 Model 类模型。那些模型有很多怪异的办法:

model.summary(): 打印出模型概述信息。它是 utils.print_summary 的简捷挪用。

model.get_config(): 返回包孕模型配置信息的字典。通过以下代码,就可以依据那些配置信息从头真例化模型:

config = model.get_config()
model = Model.from_config(config)
# or, for Sequential:
model = Sequential.from_config(config)


model.get_weights(): 返回模型权重的张质列表,类型为 Numpy array。

model.set_weights(weights): 从 Nympy array 中为模型设置权重。列表中的数组必须取 get_weights() 返回的权重具有雷同的尺寸。

model.to_json(): 以 JSON 字符串的模式返回模型的默示。请留心,该默示不蕴含权重,只包孕构造。你可以通过以下代码,从 JSON 字符串中从头真例化雷同的模型(带有从头初始化的权重):

from keras.models import model_from_json

json_string = model.to_json()
model = model_from_json(json_string)


model.to_yaml(): 以 YAML 字符串的模式返回模型的默示。请留心,该默示不蕴含权重,只包孕构造。你可以通过以下代码,从 YAML 字符串中从头真例化雷同的模型(带有从头初始化的权重):

from keras.models import model_from_yaml

yaml_string = model.to_yaml()
model = model_from_yaml(yaml_string)

model.saZZZe_weights(filepath): 将模型权重存储为 HDF5 文件。

model.load_weights(filepath, by_name=False): 从 HDF5 文件(由 saZZZe_weights 创立)中加载权重。默许状况下,模型的构造应当是稳定的。假如想将权重载入差异的模型(局部层雷同),设置 by_name=True 来载入这些名字雷同的层的权重。

Keras 层级

所有 Keras 层都有不少怪异的函数:

layer.get_weights(): 以 Numpy 矩阵的模式返回层的权重。

layer.set_weights(weights): 从 Numpy 矩阵中设置层的权重(取 get_weights 的输出外形雷同)。

layer.get_config(): 返回包孕层配置的字典。此图层可以通过以下方式重置:

layer = Dense(32)
config = layer.get_config()
reconstructed_layer = Dense.from_config(config)


假如一个层具有单个节点 (i.e. 假如它不是共享层), 你可以获得它的输入张质,输出张质,输入尺寸和输出尺寸:

layer.input

layer.output

layer.input_shape

layer.output_shape

假如层有多个节点,您可以运用以下函数:

layer.get_input_at(node_indeV)

layer.get_output_at(node_indeV)

layer.get_input_shape_at(node_indeV)

layer.get_output_shape_at(node_indeV)

那些是 Keras 模型取层级根柢的函数,文档的核心内容也是那一局部和下面形容的 API 用途取参数,它蕴含完好模型所须要的各个模块,蕴含数据、预办理、网络架构、训练、评价和可室化等。但那一局部咱们其真不会引见,因为不少时候咱们只要正在逢到未知的函数时才会具体查阅。

随机推荐

推荐文章

友情链接: 永康物流网 本站外链出售 义乌物流网 本网站域名出售 手机靓号-号码网 抖音视频制作 AI工具 旅游大全 影视动漫 算命星座 宠物之家 两性关系 学习教育