private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 1:
ScriptName = @"c:\utils\Script2.ps1";
break;
case 2:
ScriptName = @"c:\utils\Script3.ps1";
break;
default:
ScriptName = @"c:\utils\Script1.ps1";
break;
}
}
private void bw_DoWork(object sender, EventArgs e)
{
var loadScript = LoadScript(ScriptName);
if (string.IsNullOrWhiteSpace(loadScript)) return;
RunScriptResult = RunScript(loadScript);
}
private static string LoadScript(string filename)
{
if (!File.Exists(filename)) return "";
var fileContents = new StringBuilder();
var lines = File.ReadAllLines(filename);
foreach (var line in lines)
{
fileContents.Append(line + "\n");
}
return fileContents.ToString();
}
private static string RunScript(string scriptText)
{
//should start from this line
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
//bla bla bla bla
return "something";
}
输出正态分布中的随机值。
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
输出截断的正态分布中的随机值。
我尝试使用Google搜索'截断正态分布'。但是不太了解。
答案 0 :(得分:61)
documentation说明了一切: 对于截断的正态分布:
生成的值遵循具有指定均值的正态分布 和标准偏差,除了幅度更大的值 比平均值偏离2个标准偏差并重新选择。
很可能通过为自己绘制图表很容易理解差异(%magic是因为我使用的是jupyter笔记本):
import tensorflow as tf
import matplotlib.pyplot as plt
%matplotlib inline
n = 500000
A = tf.truncated_normal((n,))
B = tf.random_normal((n,))
with tf.Session() as sess:
a, b = sess.run([A, B])
现在
plt.hist(a, 100, (-4.2, 4.2));
plt.hist(b, 100, (-4.2, 4.2));
使用截断法线的要点是克服sigmoid等大部分函数的饱和度(如果值太大/太小,则神经元停止学习)。
答案 1 :(得分:22)
tf.truncated_normal()
从正态分布中选择随机数,其均值接近于0且值接近于0.例如,从-0.1到0.1。它被称为截断,因为你从正常分布中切断了尾巴。
tf.random_normal()
从正态分布中选择随机数,其均值接近0,但值可以稍微分开。例如,从-2到2。
在机器学习中,实际上,您通常希望权重接近0。
答案 2 :(得分:7)
API documentation for tf.truncated_normal()将函数描述为:
从截断的正态分布输出随机值。
生成的值遵循具有指定均值和标准差的正态分布,但值大小为的值除外 与平均值相差超过2个标准偏差 重新拾取。