每当我尝试构建几个层时,带有 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 二进制文件的情况下增加输出的详细程度?
我正在尝试实现类型的特征,以便对类型的引用可以转换为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. 我如何向编译器解释这个想法?
我试图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()甚至不会改变产生的错误代码。
我想知道如何修复循环。