小编Jse*_*mol的帖子

运行Adam Optimizer

我试图运行一个AdamOptimizer进行一步训练,不成功.

optimizer = tf.train.AdamOptimizer(learning_rate)
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    sess.run(optimizer.minimize(cost), feed_dict={X:X_data, Y: Y_data})
Run Code Online (Sandbox Code Playgroud)

控制台吐出一个难看的错误:

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value beta1_power
 [[Node: beta1_power/read = Identity[T=DT_FLOAT, _class=["loc:@W1"], _device="/job:localhost/replica:0/task:0/cpu:0"](beta1_power)]]
Run Code Online (Sandbox Code Playgroud)

在代码中,cost是一个明确定义的函数,使用两个参数X,Y(分别为NN和训练标签的条目)实现conv NN加上后勤丢失函数

关于什么可能出错的任何想法?

python conv-neural-network tensorflow

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

Prolog回溯VS Rete回溯

在我的课上,我学习了Prolog回溯算法和Rete forprop算法,但我也被告知Rete可以用来做backprop.

这是如何运作的?它与Prolog回溯的方式类似/不同?


例如,这是我给出的练习之一:

(R1) 24fingers and antennas => origin(mars)
(R2) shy and 5feet => origin(mars)
(R3) shy and 4arms => origin(venus)
(R4) looksDownWhenTalking => shy
(R5) fleesWhenSeen => shy
Run Code Online (Sandbox Code Playgroud)

目标是通过以下事实找到外星人的起源:

(F1) fleesWhenSeen
(F2) 4arms
Run Code Online (Sandbox Code Playgroud)

在Prolog中,我们将通过模式匹配origin(X)规则的RHS 的目标来解决它.规则与R1,R2和R3匹配,因此首先会触发R1,我们会尝试解决24fingers and antennas失败的子目标.

然后我们将回溯到开头并触发R2,最终将失败,最后回溯并触发R3,这成功.

因此X,venus在成功查询中结束绑定,算法结束.


现在,我们如何使用rete backprop算法解决相同的练习?

我天真地假设我们将使用一个子目标列表,从origin(X)开始,触发RHS与子目标匹配的规则.

但是,当一些子目标失败时,我不清楚Rete算法如何处理回溯,或者一旦它解决了某个目标子集,它将如何知道它已经成功.

rule-engine prolog backtracking rete

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

优化器返回无

我试图运行一个AdamOptimizer进行一步训练,不成功.

optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    _, cost_value = sess.run(optimizer, feed_dict={X:X_data, Y: Y_data})
Run Code Online (Sandbox Code Playgroud)

在代码中,cost是一个明确定义的函数,使用两个参数X,Y(分别为NN和训练标签的条目)实现conv NN加上后勤丢失函数

当我运行它时,控制台告诉我运行返回None作为输出,这让我感到困惑,因为我预计它会给我返回成本.

我究竟做错了什么?

python tensorflow

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

在Haskell中生成无限列表[0,1,-1,2,-2,...

所以假设我们想[0, 1, -1, 2, -2, ...在Haskell中生成列表.

实现这一目标最优雅的方式是什么?

我想出了这个解决方案:

solution = [0] ++ foldr (\(a,b) c->a:b:c) [] zip [1..] $ map negate [1..]
Run Code Online (Sandbox Code Playgroud)

但我相信必须有更好的方法.

haskell list infinite list-manipulation

6
推荐指数
2
解决办法
519
查看次数

在 TF 2.0 上设置随机种子

我刚刚从 TF 1.13 升级到 TF 2.0,我的口译员抱怨,因为tf.set_random_seed它不再存在。

TF 2.0 中的等效功能是什么?

python tensorflow

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

foldl和foldr等价的充分条件

考虑表达式E1 = foldl op acc lE2 = foldr op acc l.

什么是一些自然的充分条件op,acc和/或l保证等价E1E2

一个简单的例子是,如果op是常数则两者都是等价的.

我非常肯定必须有精确的条件涉及交换性和/或相关性op,和/或有限性l和/或中立性acc.

haskell fold

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

在 Keras 中构建带有嵌入层的 LSTM 网络

我想创建一个由嵌入层组成的 Keras 模型,然后是两个具有 dropout 0.5 的 LSTM,最后是一个具有 softmax 激活的密集层。

第一个 LSTM 应该将顺序输出传播到第二层,而在第二层中,我只对在处理整个序列后获取 LSTM 的隐藏状态感兴趣。

我尝试了以下方法:

sentence_indices = Input(input_shape, dtype = 'int32')

embedding_layer = pretrained_embedding_layer(word_to_vec_map, word_to_index)

embeddings = embedding_layer(sentence_indices)
# Propagate the embeddings through an LSTM layer with 128-dimensional hidden state
X = LSTM(128, return_sequences=True, dropout = 0.5)(embeddings)

# Propagate X trough another LSTM layer with 128-dimensional hidden state
X = LSTM(128, return_sequences=False, return_state=True, dropout = 0.5)(X)

# Propagate X through a Dense layer with softmax activation to get back a …
Run Code Online (Sandbox Code Playgroud)

neural-network lstm keras

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

使用填充堆叠 numpy 数组

我有一个 32 个 numpy 数组的列表,每个数组都有 shape (n, 108, 108, 2)n每个数组的形状不同。我想将它们全部堆叠起来创建一个 shape 的 numpy 数组(32, m, 108, 108, 2),其中m是 s 中的最大值n,较短的数组用零填充。

我该怎么做呢?

我昨天问了类似的问题,但是当像我的例子一样使用深度数组时,那里的答案似乎被破坏了。

具体来说,我最终采用了这个解决方案,它产生了最干净的代码:

data = np.column_stack(zip_longest(*data, fillvalue=0))
Run Code Online (Sandbox Code Playgroud)

但现在它抛出这个错误:

ValueError: setting an array element with a sequence.
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

Keras - 管理历史记录

我正在训练 Keras 模型,保存它们,model.save()然后加载它们并恢复训练。

我想在每次训练后绘制整个训练历史记录,但model.fit_generator()只返回最后一次训练的历史记录。

我可以保存初始会话的历史记录并自己更新,但我想知道 Keras 中是否有管理训练历史记录的标准方法。

history1 = model.fit_generator(my_gen)
plot_history(history1)
model.save('my_model.h5')

# Some days afterwards...

model = load_model('my_model.h5')
history2 = model.fit_generator(my_gen)

# here I would like to reconstruct the full_training history
# including the info from history1 and history2
full_history = ???
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow resuming-training

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

在Prolog中插入一个剪切以使关系子句绑定但是双向

考虑以下Prolog程序:

transform([], []).
transform([X | Xs],[Y | Ys]):-
    isSpecial(X),
    isSpecial(Y),
    transformSpecial(X,Y),
    transform(Xs,Ys).
transform([X | Xs],[ X | Ys]):-
    transform(Xs,Ys).

isSpecial(foo).
isSpecial(bar).
isSpecial(foobar).

transformSpecial(X,Y):-
    isSpecial(X),
    isSpecial(Y),
    not(X = Y).
Run Code Online (Sandbox Code Playgroud)

有些情况下我会打电话tranform([foo, 1, 2], X)和我想打电话的情况transform(X, [foo, 1, 2]).

在这两种情况下,我都希望X与之[bar, 1, 2]结合[foobar, 1, 2],但不与之结合[foo, 1, 2].也就是说,我希望一旦谓词正确识别出第二个子句适用,它就应该只使用第二个子句来回溯.

我应该在哪里插入切口以实现此行为?

prolog prolog-cut

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