小编Cho*_*One的帖子

是否可以在 Rust 的结构中创建类型别名?

我正在使用一些通用结构,如下所示:

pub struct Example<A, B, C, D, E, F> {
    inner: OtherExample<A, B, C, D, E, F>
    ...
}
Run Code Online (Sandbox Code Playgroud)

在该结构的整个实现方法中,我必须不断引用这一巨大的类型集,如下所示:

impl<A, B, C, D, E, F> Example<A, B, C, D, E, F> {
    pub fn get_inner(&self) -> &OtherExample<A, B, C, D, E, F> { 
        &self.inner
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以缩短所有这些通用类型的符号。为了便于阅读,我不能像上面的示例中那样只使用单个字母,所以我真的想在结构中创建一个泛型类型别名,如下所示:

pub struct Example<AliasedGenerics = <A, B, C, D, E, F>> {
    inner: OtherExample<AliasedGenerics>
    ...
}

impl<AliasedGenerics = <A, B, C, D, E, F>> Example<AliasedGenerics> {
    pub fn get_inner(&self) -> &OtherExample<AliasedGenerics> { …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
3466
查看次数

是什么导致训练准确度和 epoch 之间损失的大幅跃升?

在 Python 中的 Tensorflow 2.0 中训练神经网络时,我注意到训练精度和损失在不同时期之间发生了巨大变化。我知道打印的指标是整个 epoch 的平均值,但在每个 epoch 之后准确率似乎显着下降,尽管平均值总是在增加。

损失也表现出这种行为,每个时期显着下降,但平均值增加。这是我的意思的图像(来自 Tensorboard):

奇怪的训练行为

我在我自己实现的所有模型上都注意到了这种行为,所以这可能是一个错误,但我想就这是否是正常行为以及如果是这样意味着什么?

另外,我使用了一个相当大的数据集(大约 300 万个示例)。批次大小为 32,准确率/损失图中的每个点代表 50 个批次(图中 2k = 100k 批次)。批次的学习率图是 1:1。

python keras tensorflow tensorflow2.0

5
推荐指数
1
解决办法
4456
查看次数

如何在 Tensorflow 2.0 中制作不规则批处理?

我正在尝试从由一维数值数据张量组成的 Tensorflow 数据集创建数据输入管道。我想创建一批不规则的张量;我不想填充数据。

例如,如果我的数据采用以下形式:

[
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
    [0, 1, 2, 3, 4]
    ...
]

Run Code Online (Sandbox Code Playgroud)

我希望我的数据集由以下形式的批次组成:

<tf.Tensor [
    <tf.RaggedTensor [
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
        [0, 1, 2, 3, 4], 
        ...]>,
    <tf.RaggedTensor [
        [ ... ],
        ...]>
    ]>
Run Code Online (Sandbox Code Playgroud)

我尝试过RaggedTensor使用地图创建一个,但似乎无法在一维数据上执行此操作。

python python-3.x tensorflow tensorflow2.0

4
推荐指数
1
解决办法
2515
查看次数

如何制作需要固定大小数组的特征边界?

我试图创建一个特征,它只是其他特征的组合,最终目标是创建一个特征来证明类型是一个大小的数组。

此外,我希望能够在没有额外库的情况下在稳定的 Rust 中做到这一点。

我尝试添加一堆特征边界来模拟固定大小数组的限制,如下所示:

trait SizedArray<T>
where
    T: Sized + Eq + Copy + Clone,
{
}

impl<T> SizedArray<T> for [T; 32] where T: Sized + Eq + Copy + Clone {}

fn processArray<T, U>(array: T)
where
    T: SizedArray<U>,
    U: Sized + Eq + Copy + Clone,
{
    let a = array[0];
    for i in array.iter() {
        let size = array.len();
        /* do something with the array */
    }
}

fn main() {
    let array = [0u8; 32];

    processArray(array); …
Run Code Online (Sandbox Code Playgroud)

arrays traits rust

3
推荐指数
1
解决办法
933
查看次数

标签 统计

python ×2

rust ×2

tensorflow ×2

tensorflow2.0 ×2

arrays ×1

keras ×1

python-3.x ×1

traits ×1