我试图匹配一些句子(例如001 [0,0,1],(1 +(1/0))['(',1,+,'(',1,/,0,')' ,')'], 等等.
我已经让自己跟随小型DCG了.
g3 --> s3.
s3 --> e3.
e3 --> eAdd.
e3 --> eMin.
e3 --> eMul.
e3 --> eDiv.
e3 --> n3.
eAdd --> ['('],e3,['+'],e3,[')'].
eMin --> ['('],e3,['-'],e3,[')'].
eMul --> ['('],e3,['*'],e3,[')'].
eDiv --> ['('],e3,['/'],e3,[')'].
n3 --> d3.
n3 --> n3,d3.
d3 --> [0].
d3 --> [1].
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,它与使用 - ,*或/的句子不匹配,但它仅适用于使用+的递归句子.
例如:
phrase(g3,['(',1,'+','(',1,'+',1,')',')']).
Run Code Online (Sandbox Code Playgroud)
会工作,但是
phrase(g3,['(',1,'+','(',1,'/',1,')',')']).
Run Code Online (Sandbox Code Playgroud)
不行.
任何帮助将不胜感激,谢谢!
我想将 PyTorch 模型“翻译”到另一个框架(非 tf/keras)。
我正在尝试采用 pytorch 模型,并自动转换到其他框架,其中包含类似类型的层(即 conv2d、dense,...)。
有没有办法直接从 pytorch 或通过 onnx 检索模型层、它们的类型、形状和连接?(到目前为止,权重并不重要)
正如标题所说,我并没有完全理解哈斯克尔如何解释
1:[[]]
Run Code Online (Sandbox Code Playgroud)
它为什么这么做(1:[]):[]
?
E:我从以下方面得到了这个想法:
part'::[a] -> [[a]]
part' [] = [[]]
part' (x:xs) = p ++ [x:ys | ys <- p]
where p = part' xs
Run Code Online (Sandbox Code Playgroud)
具体来自 p ++ [x:ys | ys <- p]
例如part'[1]
:我的思路是否正确?:
part'[1] = (part'[]) ++ [1:ys | ys <- part'[]]
--> = [[]] ++ [1:[[]]]
Run Code Online (Sandbox Code Playgroud)
希望这说清楚.