我有一个矩阵P与形状MxN和三维张量T与形状KxNxR.我想P与每个NxR矩阵相乘T,产生一个KxMxR3d张量.
P.dot(T).transpose(1,0,2)给出了期望的结果.有没有更好的解决方案(即摆脱transpose)这个问题?这必须是一个非常常见的操作,所以我假设,其他人已经找到了不同的方法,例如使用tensordot(我试过但未能获得所需的结果).意见/观点将受到高度赞赏!
我的日志文件每行有一个json对象.我用[json] [1]来获取人类可读的输出
cat mylog.log | json -a field1 field2
Run Code Online (Sandbox Code Playgroud)
现在我想拥有
tail -F mylog.log | json -a field1 field2
Run Code Online (Sandbox Code Playgroud)
为了连续输出.但这似乎不起作用,shell只是挂起.如果我&|用来避免缓冲问题,输出就像我只运行一样cat.
mylog.log 看起来像这样:
{"field1": entry1a, "field2": entry2a, "field3": entry3a}
{"field1": entry1b, "field2": entry2b, "field3": entry3b}
Run Code Online (Sandbox Code Playgroud)
有什么建议?
在标准预取队列之后,我通过一些额外的验证代码扩展了前面提到的示例,请参阅附带的代码.也就是说,每个第i个训练步骤,在验证集上评估学习模型(在我的例子中是几个).验证集不能通过队列提供,因此一个可能的想法是使用共享变量构建额外的推理图.
这在某种程度上有效,但是在训练结束后,程序挂起(at coord.join())并最终抛出异常:Coordinator stopped with threads still running:...然后异步加载线程也抛出异常.该coordinator异常可以通过得到解决try/except条款(见下面的代码),但异步线程仍然抛出一个异常(这不妨碍主程序,虽然,但在我的opinon不应该发生的---它的while循环,应该告诉它停止).
有趣的是,如果在没有运行任何评估代码的情况下完成培训(即if (it+1)%stop == 0:注释掉后的块),则coord.join()根本不会挂起.
我的问题:我在这里做错了什么?似乎.request_stop()没有做我希望它应该做的事情?
import tensorflow as tf
import numpy as np
# some parameters
btsz = 100 # batch size
some_shape = 20 # size of one input (no of dims)
iters = 1000 # that many single training steps
ith = 10 # run validation sets every so often
# datastores (sort …Run Code Online (Sandbox Code Playgroud)