KerasHub: 预训练模型 / API 文档 / 模型架构 / Moonshine / MoonshineBackbone 模型

MoonshineBackbone 模型

[源代码]

MoonshineBackbone

keras_hub.models.MoonshineBackbone(
    vocabulary_size,
    filter_dim,
    encoder_num_layers,
    decoder_num_layers,
    hidden_dim,
    intermediate_dim,
    encoder_num_heads,
    decoder_num_heads,
    feedforward_expansion_factor=4,
    encoder_use_swiglu_activation=False,
    decoder_use_swiglu_activation=True,
    max_position_embeddings=2048,
    pad_head_dim_to_multiple_of=None,
    partial_rotary_factor=0.62,
    dropout=0.0,
    initializer_range=0.02,
    rope_theta=10000.0,
    attention_bias=False,
    attention_dropout=0.0,
    dtype=None,
    **kwargs
)

Moonshine 主干网络,集成音频特征提取。

此类实现了一个编码器-解码器主干网络,如 Moonshine ASR 系统中所用。它包括用于音频特征提取的初始卷积层,然后是用于处理这些特征的 MoonshineEncoderBlock 实例和用于生成输出序列的 MoonshineDecoderBlock 实例。

参数

  • vocabulary_size: int。嵌入层的词汇表大小。
  • filter_dim: int。初始卷积特征提取器层的滤波器数量。通常与 hidden_dim 匹配。
  • encoder_num_layers: int。堆叠编码器块的数量。
  • decoder_num_layers: int。堆叠解码器块的数量。
  • hidden_dim: int。模型隐藏表示和嵌入的维度。
  • intermediate_dim: int。前馈网络中中间表示的维度。
  • encoder_num_heads: int。编码器多头注意力中的注意力头数量。
  • decoder_num_heads: int。解码器多头注意力中的注意力头数量。
  • feedforward_expansion_factor: int,可选。应用于 intermediate_dim 的乘数,用于确定前馈网络的总宽度。默认为 4。
  • encoder_use_swiglu_activation: bool,可选。当为 True 时,在编码器前馈网络中使用 SwiGLU 激活函数。默认为 False。
  • decoder_use_swiglu_activation: bool,可选。当为 True 时,在解码器前馈网络中使用 SwiGLU 激活函数。默认为 True。
  • max_position_embeddings: int,可选。位置嵌入的最大序列长度。默认为 2048。
  • pad_head_dim_to_multiple_of: int,可选。如果指定,将头部维度填充为此值的倍数以优化性能。默认为 None。
  • partial_rotary_factor: float,可选。应用旋转位置嵌入的维度分数。默认为 0.62。
  • dropout: float,可选。输入 dropout 层的 dropout 概率。默认为 0.0。
  • initializer_range: float,可选。权重截断正态初始化器的标准差。默认为 0.02。
  • rope_theta: float,可选。旋转位置嵌入的基频。默认为 10,000.0。
  • attention_bias: bool,可选。是否在注意力机制中使用偏差。默认为 False。
  • attention_dropout: float,可选。注意力机制的 dropout 概率。默认为 0.0。
  • dtype: str,可选。用于模型计算和权重的 dtype。默认为 None。

示例

import numpy as np
import keras
from keras_hub.models import MoonshineBackbone

# Create random input data for demonstration.
# Input is now raw-ish audio features (e.g., from MoonshineAudioConverter).
encoder_raw_input_values = np.random.rand(1, 16000, 1).astype("float32")
# Mask corresponding to the raw input time dimension
encoder_padding_mask = np.ones((1, 16000), dtype="bool")
decoder_token_ids = np.random.randint(
    0, 1000, size=(1, 20), dtype="int32"
)
decoder_padding_mask = np.ones((1, 20), dtype="bool")

# Initialize the Moonshine backbone with specific parameters.
backbone = MoonshineBackbone(
    vocabulary_size=10000,
    filter_dim=256,
    encoder_num_layers=6,
    decoder_num_layers=6,
    hidden_dim=256,
    intermediate_dim=512,
    encoder_num_heads=8,
    decoder_num_heads=8,
    feedforward_expansion_factor=4,
    decoder_use_swiglu_activation=True,
    encoder_use_swiglu_activation=False,
)

# Forward pass through the model.
outputs = backbone(
    {
        "encoder_input_values": encoder_raw_input_values,
        "encoder_padding_mask": encoder_padding_mask,
        "decoder_token_ids": decoder_token_ids,
        "decoder_padding_mask": decoder_padding_mask,
    }
)

# Display the outputs.
print("Encoder output shape:", outputs["encoder_sequence_output"].shape)
print("Decoder output shape:", outputs["decoder_sequence_output"].shape)

[源代码]

from_preset 方法

MoonshineBackbone.from_preset(preset, load_weights=True, **kwargs)

从模型预设实例化一个 keras_hub.models.Backbone

预设是一个包含配置、权重和其他文件资源的目录,用于保存和加载预训练模型。preset 可以作为以下之一传递:

  1. 一个内置的预设标识符,如 'bert_base_en'
  2. 一个 Kaggle Models 句柄,如 'kaggle://user/bert/keras/bert_base_en'
  3. 一个 Hugging Face 句柄,如 'hf://user/bert_base_en'
  4. 一个本地预设目录的路径,如 './bert_base_en'

此构造函数可以通过两种方式调用。可以从基类调用,例如 keras_hub.models.Backbone.from_preset(),也可以从模型类调用,例如 keras_hub.models.GemmaBackbone.from_preset()。如果从基类调用,返回对象的子类将根据预设目录中的配置推断。

对于任何 Backbone 子类,您可以运行 cls.presets.keys() 来列出该类上所有可用的内置预设。

参数

  • preset:字符串。一个内置预设标识符、一个 Kaggle Models 句柄、一个 Hugging Face 句柄或一个本地目录的路径。
  • load_weights:布尔值。如果为 `True`,权重将被加载到模型架构中。如果为 `False`,权重将被随机初始化。

示例

# Load a Gemma backbone with pre-trained weights.
model = keras_hub.models.Backbone.from_preset(
    "gemma_2b_en",
)

# Load a Bert backbone with a pre-trained config and random weights.
model = keras_hub.models.Backbone.from_preset(
    "bert_base_en",
    load_weights=False,
)
预设 参数 描述
moonshine_tiny_en 27.09M 用于英语语音识别的 Moonshine tiny 模型。由 Useful Sensors 开发,用于实时转录。
moonshine_base_en 61.51M 用于英语语音识别的 Moonshine base 模型。由 Useful Sensors 开发,用于实时转录。

token_embedding 属性

keras_hub.models.MoonshineBackbone.token_embedding

一个用于嵌入词元 ID 的 keras.layers.Embedding 实例。

该层将整数词元 ID 嵌入到模型的隐藏维度。