小编Mik*_*and的帖子

运行 Tensorflow 时“启动无法生成子进程:没有此类文件或目录”的含义

每当我尝试构建几个层时,带有 CUDA 11.2 的 Ubuntu 20.04 上的 Tensorflow 2.9.1 都会不断向标准输出写入以下错误:

2022-06-05 08:32:29.319040: I tensorflow/stream_executor/cuda/cuda_dnn.cc:384] Loaded cuDNN version 8100
2022-06-05 08:32:29.527708: I tensorflow/core/platform/default/subprocess.cc:304] Start cannot spawn child process: No such file or directory
Run Code Online (Sandbox Code Playgroud)

没有回溯或任何东西。不过,该模型似乎可以正常构建,但我想知道是否有任何性能影响。

这个错误的原因可能是什么?有没有办法在不重建 Tensorflow 二进制文件的情况下增加输出的详细程度?

python posix tensorflow

20
推荐指数
1
解决办法
1万
查看次数

类型参数不受 impl 特征、自身类型或谓词的约束

我正在尝试实现类型的特征,以便对类型的引用可以转换为Item实现特定特征的迭代器

具体来说,考虑以下代码:

struct Arena;

pub trait Scan {
    fn scan(&self, arena: &mut Arena);
}

impl<'a, 'b, Iterable, Item> Scan for Iterable
where
    &'b Iterable: IntoIterator<Item = Item>,
    Item: Scan + 'a,
{
    fn scan(&self, arena: &mut Arena) {
        for item in (&self).into_iter() {
            item.scan(arena);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅Playground 中的示例)

编译器抱怨,并强调Item

the type parameter `Item` is not constrained by the impl trait, self type, or predicates
unconstrained type parameter
Run Code Online (Sandbox Code Playgroud)

我现在不太明白我在哪里走错了方向:对我来说,看起来通用实现是否很大程度上受到where. 我如何向编译器解释这个想法?

generics traits rust

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

重新分配应该是循环中可变借用的不可变变量

我试图sums: Vec<i64>在迭代时修改一个可变的。循环代码如下:

for (j, &mut sum) in sums.iter_mut().enumerate() {
    if !(j == i) {
        sum += n;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

for (j, &mut sum) in sums.iter_mut().enumerate() {
    if !(j == i) {
        sum += n;
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎完全神秘。Rust 允许我可变地借用sumfrom sums,但编译器阻止我实际修改它。省略.enumerate()甚至不会改变产生的错误代码。

我想知道如何修复循环。

mutable rust

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

标签 统计

rust ×2

generics ×1

mutable ×1

posix ×1

python ×1

tensorflow ×1

traits ×1