小编E_n*_*ate的帖子

TensorFlow中的异步计算

最近我一直在玩TensorFlow,我提到框架无法使用我所有可用的计算资源.在卷积神经网络教程中,他们提到了这一点

天真地使用模型参数的异步更新导致次优的训练性能,因为可以在模型参数的陈旧副本上训练单个模型副本.相反,采用完全同步更新将与最慢的模型副本一样慢.

虽然他们在教程和白皮书中都提到了它,但我并没有真正找到在本地机器上进行异步并行计算的方法.它甚至可能吗?或者它是TensorFlow的分布式待发布版本的一部分.如果是,那怎么样?

python tensorflow

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

Typescript Switch语句抛出"与类型"错误无法匹配

对不起,我知道这是超级基本但似乎无法找到答案.在Typescript上做一个Lynda教程(https://www.lynda.com/Visual-Studio-tutorials/TypeScript-types-part-2/543000/565613-4.html#tab),我遇到了麻烦.示例代码说明了switch语句在TS中是如何工作的,但是对于教师而言似乎正常工作的代码抛出了类型'x'与类型'y'错误不可比.这是代码:

enum temperature{
    cold,
    hot
}

let temp = temperature.cold;

switch (temp) {
    case temperature.cold:
        console.log("Brrr....");
        break;
    case temperature.hot:
        console.log("Yikes...")
        break;
}
Run Code Online (Sandbox Code Playgroud)

我得到一个错误并在'case temperature.hot'下曲线说'Type'temperature'hot'与'temperature.cold'类型无法比较.是什么赋予了?

switch-statement typescript

12
推荐指数
2
解决办法
4845
查看次数

我们如何编写用于检查Serde序列化和反序列化的通用函数?

在涉及自定义Serde(1.0)序列化和反序列化方法的项目中,我依靠此测试例程来检查序列化对象和返回是否会产生等效对象.

// let o: T = ...;
let buf: Vec<u8> = to_vec(&o).unwrap();
let o2: T = from_slice(&buf).unwrap();
assert_eq!(o, o2);
Run Code Online (Sandbox Code Playgroud)

这样的内联工作非常好.我对可重用性的下一步是check_serde为此目的发挥作用.

pub fn check_serde<T>(o: T)
where
    T: Debug + PartialEq<T> + Serialize + DeserializeOwned,
{
    let buf: Vec<u8> = to_vec(&o).unwrap();
    let o2: T = from_slice(&buf).unwrap();
    assert_eq!(o, o2);
}
Run Code Online (Sandbox Code Playgroud)

这适用于拥有类型,但不适用于具有生命周期边界的类型(Playground):

check_serde(5);
check_serde(vec![1, 2, 5]);
check_serde("five".to_string());
check_serde("wait"); // [E0279]
Run Code Online (Sandbox Code Playgroud)

错误:

error[E0279]: the requirement `for<'de> 'de : ` is not satisfied (`expected bound lifetime parameter 'de, found concrete lifetime`)
  --> …
Run Code Online (Sandbox Code Playgroud)

serialization lifetime rust serde

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

源错误是否应该在显示输出中包含该源?

我有一个隐含该Error特征的错误类型,它包装了一个潜在的错误原因,因此该source方法返回Some(source). 我想知道Display我的错误类型的 impl 是否应该包含该源错误的描述。

我可以看到两个选项:

  1. 是的,包含sourceDisplay输出中,例如“打开数据库时出错:没有这样的文件”

这使得只需通过格式化即可轻松打印整个错误链,"{}"但不可能仅显示错误本身而不显示底层源错误链。它还使该source方法有点毫无意义,并且使客户端代码无法选择如何格式化链中每个错误之间的分隔。然而,在我发现的示例代码中,这种选择似乎很常见。

  1. 不,只需打印错误本身,例如“打开数据库时出错”,并将其留给客户端代码来遍历和显示(source如果客户端代码希望将其包含在输出中)。

这使客户端代码可以选择是否仅显示表面错误或整个链,以及在后一种情况下如何格式化链中每个错误之间的分隔。它给客户端代码留下了遍历链的负担,而且我还没有找到一个规范的实用程序来方便地格式化错误链,其中每个错误都只Display自己排除source。(所以我当然有自己的。)

混乱的箱子(我真的很喜欢)似乎暗示有利于选项 2,因为带有字段source但没有display属性的错误变体默认为格式化Display不包含source.

也许我真正的问题是:该方法的目的是什么source?是为了让格式化错误链更加灵活吗?或者Display真的应该输出用户可见的有关错误的所有内容,并且source仅用于开发人员可见的目的?

我希望看到一些关于此的明确指导,最好是在该Error特征的文档中。

#[derive(Debug)]
enum DatabaseError {
    Opening { source: io::Error },
}

impl Error for DatabaseError {
    fn source(&self) -> Option<&(dyn Error + 'static)> {
        match self {
            DataBaseError::Opening { source …
Run Code Online (Sandbox Code Playgroud)

error-handling rust

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

TensorFlow - tf.layers vs tf.contrib.layers

在TensorFlow,tf.layers并且tf.contrib.layers共享许多功能(标准2D卷积层,批标准化层等)的.两者之间的区别仅仅在于封装被认为是稳定contrib.layerslayers封装仍然是实验性的吗?或者一个被另一个取代?其他差异?为什么这两个分开?

python tensorflow

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

是否可以将可选链与数组和映射(在 Javascript 中)结合起来?

我最近了解了Javascript 中的可选链,并在 React/NodeJS 项目中使用了它。效果很好。

我注意到我一直在将它与数组一起使用map,即使没有考虑太多——这似乎是一个自然的使用(这里items是一个数组,或者可能是undefined

        {items?.map(postListItem => ....
Run Code Online (Sandbox Code Playgroud)

也就是说,它将映射 ifexists items,但不会映射 if itemsis ,但如果我要调用undefined,它将避免任何运行时错误mapundefined

尽管如此,我不知道这是否是可接受的用途,或者我是否错误地使用了可选链。我寻找答案,但到目前为止还没有找到答案,这让我怀疑我使用不当。任何信息非常感谢!

javascript reactjs ecmascript-next

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

如何在结构体中声明矩阵?

在我的代码中

mutable struct frame
    Lx::Float64
    Ly::Float64
    T::Matrix{Float64}  #I think the error is here

    function frame(
        Lx::Float64,
        Ly::Float64,
        T::Matrix{Float64}
    )
        return new(Lx, Ly, T)
    end
end

frames = frame[]
push!(frames, frame(1.0, 1.0, undef)) #ERROR here I try nothing, undef, any
push!(frames, frame(2.0, 1.0, undef)) #ERROR here I try nothing, undef, any

frames[1].T = [1 1 2]
frames[2].T = [[2 4 5 6] [7 6 1 8]]
Run Code Online (Sandbox Code Playgroud)

我收到以下错误::Matrix

ERROR: MethodError: no method matching frame(::Float64, ::Float64, ::UndefInitializer)
Closest candidates are:
  frame(::Float64, ::Float64, …
Run Code Online (Sandbox Code Playgroud)

julia

11
推荐指数
2
解决办法
431
查看次数

测试:单位与整合与其他人,分离需要什么?

问题我是单元测试还是集成测试?我已经回答了,有点挑衅:做你的测试,让其他人花时间分类.

对我来说,各种级别的测试之间的区别在技术上是没有意义的:通常使用相同的工具,需要相同的技能,达到相同的目标:消除软件故障.与此同时,我可以理解大多数开发人员使用的传统工作流程需要这种区分.我对传统工作流程感到不安.

因此,我的问题旨在更好地理解对我来说是什么样的争议,以及收集关于各级测试之间的这种分离是否相关的各种观点.

我的意见错了吗?是否存在其他不强调这种分离的工作流程(可能是敏捷方法)?您对此主题的体验是什么?

精确度:我完全了解这些定义(对于那些没有定义的人,请参阅此问题).我想我不需要有关软件测试的课程.但如果您的答案需要,请随时提供一些背景知识.

testing

10
推荐指数
2
解决办法
4040
查看次数

为什么cancelledPromise模式被认为比React中的isMounted()"antipattern"更好?

请参阅:https ://reactjs.org/blog/2015/12/16/ismounted-antipattern.html 以及此处:如何取消对componentWillUnmount的获取并在此处:ismounted antipattern,track own property

在这两种情况下,他们提到了3种方

  • 在您的promise.resolve支票中this.IsMounted(),如果"已安装已卸载",React将为您正确返回
  • 在您的promise.resolve检查中_isMounted,您已在ComponentWillUnmount()方法中手动跟踪.
  • 使用可取消的承诺,以便您promise永远不会解决.这将解决你所有的问题并让它变得可爱.

除了,在第三种情况下你的promise遗嘱error(),但也可能error()在其他情况下(例如API已关闭).

所以实际上第3个选项可归结为: - 在您的promise.error检查中errorPayload.IsCancelled,您已在cancellablePromise对象中手动跟踪,而该检查又由手动调用触发ComponentWillUnmount.

所以这三个都完全相同:

处理promise结果时,请检查此变量的值,该值与组件是否已经存在直接关联unmounted.

为什么他们声称第3个选项比其他2更好,并且第1个选项是反模式.

javascript reactjs

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

如何使用数组填充特征对象向量?

为什么下面的代码会出错?[T; N]into有一个全面的实现Vec<T>,那么为什么在这种情况下dyn Foo不匹配呢?Fooable是否有不涉及克隆的解决方法Fooable

trait Foo {}

struct Fooable {}

impl Foo for Fooable {}

pub fn main() {
    let bar: Vec<Box<dyn Foo>> = [
        Box::new(Fooable {}),
    ].into();
}
Run Code Online (Sandbox Code Playgroud)

错误:

error[E0277]: the trait bound `Vec<Box<dyn Foo>>: From<[Box<Fooable>; 1]>` is not satisfied
  --> src/main.rs:10:7
   |
10 |     ].into();
   |       ^^^^ the trait `From<[Box<Fooable>; 1]>` is not implemented for `Vec<Box<dyn Foo>>`
   |
   = help: the following other types implement trait `From<T>`:
             <Vec<T, A> …
Run Code Online (Sandbox Code Playgroud)

rust

10
推荐指数
2
解决办法
1290
查看次数