我目前正在测试Parallel for C#.通常它工作正常,使用并行比正常的foreach循环更快.但是,有时(如5次中的1次),我的CPU将达到100%的使用率,导致并行任务非常慢.我的CPU设置为i5-4570,内存为8gb.有谁知道为什么会出现这个问题?
以下是我用来测试功能的代码
// Using normal foreach
ConcurrentBag<int> resultData = new ConcurrentBag<int>();
Stopwatch sw = new Stopwatch();
sw.Start();
foreach (var item in testData)
{
if (item.Equals(1))
{
resultData.Add(item);
}
}
Console.WriteLine("Normal ForEach " + sw.ElapsedMilliseconds);
// Using list parallel for
resultData = new ConcurrentBag<int>();
sw.Restart();
System.Threading.Tasks.Parallel.For(0, testData.Count() - 1, (i, loopState) =>
{
int data = testData[i];
if (data.Equals(1))
{
resultData.Add(data);
}
});
Console.WriteLine("List Parallel For " + sw.ElapsedMilliseconds);
// Using list parallel foreach
//resultData.Clear();
resultData = new ConcurrentBag<int>(); …
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在 Keras 中实现 DDPG。我知道如何更新评论家网络(普通 DQN 算法),但我目前坚持更新演员网络,它使用等式:
因此,为了将演员网络 wrt 的损失减少到其权重 dJ/dtheta,它使用链式法则来获得 dQ/da(来自评论家网络)* da/dtheta(来自演员网络)。
这看起来不错,但我无法理解如何从这两个网络中推导出梯度。有人可以向我解释这部分吗?
对于语义细分,通常最后一层是
output = Conv2D(num_classes, (1, 1), activation='softmax')
我的问题是,我该如何准备标签?例如,如果我要识别10个类,每个类都有不同的颜色。对于每个标签图像,是否需要对一种特定颜色应用蒙版,将其转换为灰度图像,以便可以与模型输出中的1个滤镜进行比较?还是有一种方法可以传递一张完整的RGB图片作为标签?