我正在使用函子在 SWI-Prolog 中使用 arg/3 来获取随机访问数组。我正在做的是将样本中的值加载到我创建的函子中,并断言该数组以供将来使用。
加载后,随机访问确实是 O(1),正如我使用 time/1 验证的那样。问题是从断言加载函子需要花费大量时间( time/1 表明它与数组的大小呈线性关系)。有什么办法可以将其加快到恒定时间吗?
最少的复制代码:
:- dynamic
current_sample/1.
xrange(L,R,X):-
L < R,
( X = L;
X1 is L+1, xrange(X1,R,X)
).
arraybase_from_list__set_arg_from_list([], _, _).
arraybase_from_list__set_arg_from_list([Head|Tail], I, ResArray):-
I1 is I+1,
nb_setarg(I1, ResArray, Head),
arraybase_from_list__set_arg_from_list(Tail, I1, ResArray).
arraybase_from_list(List, ResArray):-
length(List, L),
functor(ResArray, custom_array_data, L),
arraybase_from_list__set_arg_from_list(List, 0, ResArray ).
test_array_create( N ):- % Creates a dummy array of squares of numbers fromo [0,N)
findall( X2, (xrange( 0,N,X), X2 is X*X), XList ),
arraybase_from_list( XList, Arr …Run Code Online (Sandbox Code Playgroud) 我想反转一个名为 revLists 的函数,它接受一个列表列表并反转所有子列表。
任何建议都会有所帮助。
这是我的想法:
let revLists[[]] = List.map (fun [[]] -> List.rev);;
revLists[[1;2;3],[4;5]];;
Run Code Online (Sandbox Code Playgroud) 我可以通过各种方式声明一种在泛型类型上运行的类型?
我看到了以下语法:
// There's a generic type called Aggregate that will be operated on by the Id type
type 'Aggregate Id = Created of 'Aggregate
Run Code Online (Sandbox Code Playgroud)
上面的语法是另一种做出以下声明的方法吗?
// The Id type operates on a generic type called 'Aggregate
type Id<'Aggregate> = Created of 'Aggregate
Run Code Online (Sandbox Code Playgroud)
我试图参考以下文档.但是,我没有看到替代技术的例子.
如何使用可变数量的参数实现方法?
public class MyClass
{
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
}
Run Code Online (Sandbox Code Playgroud)
那我怎么能在F#中做到这一点?
type MyClass() =
member this.SomeMethod(params (args:string array)) = ()
Run Code Online (Sandbox Code Playgroud)
我从上面的代码收到以下错误:
The pattern discriminator 'params' is not defined
Run Code Online (Sandbox Code Playgroud) 目前我可以生成表达式树.
expression_tree([_|N_s],N_s, [number(0)]).
expression_tree([_|N_s0],N_s1, [op(neg),[E1]]) :-
expression_tree(N_s0,N_s1, E1).
expression_tree([_|N_s0],N_s2, [op(add), [E1, E2]]) :-
expression_tree(N_s0,N_s1, E1),
expression_tree(N_s1,N_s2, E2).
generate_expression(N_c, E) :-
length(N, N_c),
expression_tree(N,[], E).
?- generate_expression(N,E).
N = 1,
E = [number(0)] ;
N = 2,
E = [op(neg), [[number(0)]]] ;
N = 3,
E = [op(neg), [[op(neg), [[number(0)]]]]] ;
N = 3,
E = [op(add), [[number(0)], [number(0)]]] ;
N = 4,
E = [op(neg), [[op(neg), [[op(neg), [[number(0)]]]]]]] ;
N = 4,
E = [op(neg), [[op(add), [[number(0)], [number(0)]]]]] ;
N …Run Code Online (Sandbox Code Playgroud) 我是一名学生...我尝试将查询保存到文档中的文件中,但收到错误消息
c:\user\my_account\documents\script.sql 文件未找到
请检查文件名并重试。
其他问题:
在使用 REPL 的 SWI-Prolog 中,可以轻松地从任何基数转换为基数 10,例如
?- X = 16'FF.
X = 255.
?- X = 2'11111111.
X = 255.
Run Code Online (Sandbox Code Playgroud)
然而这失败了。(没想到它会起作用,但显示了我的想法。)
?- 2'X = 16'FF.
ERROR: Syntax error: Operator expected
ERROR:
ERROR: ** here **
ERROR: 2'X = 16'FF .
Run Code Online (Sandbox Code Playgroud) 我想知道我是否可以在文本分类问题中使用 OpenAI GPT-3 进行迁移学习?如果是这样,我如何使用 Tensorflow、Keras 开始它。
text-classification keras transfer-learning openai-api gpt-3
我正在尝试编写一个程序,给定一个句子列表,返回最可能的一个。我想使用 GPT-2,但我对使用它还很陌生(因为我真的不知道该怎么做)。我计划在给定前面的单词的情况下查找单词的概率,并将所有概率相乘以获得该句子出现的总体概率,但是我不知道如何在给定前面的单词的情况下查找单词出现的概率。这是我的(伪)代码:
sentences = # my list of sentences
max_prob = 0
best_sentence = sentences[0]
for sentence in sentences:
prob = 1 #probability of that sentence
for idx, word in enumerate(sentence.split()[1:]):
prob *= probability(word, " ".join(sentence[:idx])) # this is where I need help
if prob > max_prob:
max_prob = prob
best_sentence = sentence
print(best_sentence)
Run Code Online (Sandbox Code Playgroud)
我可以帮忙吗?
在C++中,编译器/语言是否有可能自动推导出未实现的运算符?
例如,如果我有:
class X
{
public:
bool operator ==(const X &x) const;
};
Run Code Online (Sandbox Code Playgroud)
是否有一种方法可以隐式推断出!=
我会将这些问题用于半相关的问题:地图的唯一要求是如何实现<运算符?它如何比较平等?
f# ×3
prolog ×3
swi-prolog ×2
arrays ×1
c++ ×1
generics ×1
gpt-2 ×1
gpt-3 ×1
keras ×1
list ×1
nlp ×1
openai-api ×1
paramarray ×1
probability ×1
python ×1
sql-server ×1
syntax ×1