/// <summary> /// Searches for a parameter by name and returns its value as a <i>double</i> if found, or a default <i>double</i> value if not. /// </summary> /// <param name="strName">Specifies the name to look for.</param> /// <param name="dfDefault">Specifies the default value to return if not found.</param> /// <returns>The <i>double</i> value of the named parameter is returned if found, otherwise the default <i>double</i> value is returned.</returns> public double Find(string strName, double dfDefault) { string strVal = Find(strName, null); if (strVal == null) { return(dfDefault); } return(BaseParameter.ParseDouble(strVal)); }
/// <summary> /// The ParseConfigurationString method parses a deep draw configuration string into the actual settings. /// </summary> /// <param name="strConfig">Specifies the configuration string to parse.</param> /// <param name="nWd">Returns the input width.</param> /// <param name="nHt">Returns the input height.</param> /// <param name="dfOutputDetailPct">Returns the percentage of detail to apply to the final image.</param> /// <param name="strSrcBlobName">Returns the source blob name.</param> /// <param name="dfRandomImageScale">Returns the random image scale to use, a number in the range [0,50] used to create varying degrees of gray in the random input image. /// A value of 0 removes the variation and uses a consistent image. The default value is 16.</param> /// <returns>Returns the collection of Octaves to run.</returns> public static OctavesCollection ParseConfigurationString(string strConfig, out int nWd, out int nHt, out double dfOutputDetailPct, out string strSrcBlobName, out double dfRandomImageScale) { RawProto proto = RawProto.Parse(strConfig); string strVal; nHt = -1; if ((strVal = proto.FindValue("input_height")) != null) { nHt = int.Parse(strVal); } nWd = -1; if ((strVal = proto.FindValue("input_width")) != null) { nWd = int.Parse(strVal); } dfOutputDetailPct = 0.25; if ((strVal = proto.FindValue("output_detail_pct")) != null) { dfOutputDetailPct = BaseParameter.ParseDouble(strVal); } strSrcBlobName = "data"; if ((strVal = proto.FindValue("src_blob_name")) != null) { strSrcBlobName = strVal; } dfRandomImageScale = 16; if ((strVal = proto.FindValue("random_image_scale")) != null) { dfRandomImageScale = BaseParameter.ParseDouble(strVal); } OctavesCollection col = new OctavesCollection(); RawProtoCollection rpcol = proto.FindChildren("octave"); foreach (RawProto protoChild in rpcol) { col.Add(Octaves.FromProto(protoChild)); } return(col); }
/// <summary> /// Load all memory items from file. /// </summary> /// <param name="strFile">Specifies the file containing the memory items.</param> public void Load(string strFile) { m_nNextIdx = 0; m_nCount = 0; List <MemoryItem> rg = new List <MemoryItem>(); using (StreamReader sr = new StreamReader(strFile)) { string strLine = sr.ReadLine(); while (strLine != null) { string[] rgstr = strLine.Split(','); int nIdx = 0; List <double> rgdfData = new List <double>(); rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; SimpleDatum sdCurrent = new SimpleDatum(true, 4, 1, 1, -1, DateTime.MinValue, rgdfData, 0, false, -1); int nAction = int.Parse(rgstr[nIdx]); nIdx++; double dfReward = BaseParameter.ParseDouble(rgstr[nIdx]); nIdx++; bool bTerminated = (int.Parse(rgstr[nIdx]) == 1) ? true : false; nIdx++; rgdfData = new List <double>(); rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; rgdfData.Add(BaseParameter.ParseDouble(rgstr[nIdx])); nIdx++; SimpleDatum sdNext = new SimpleDatum(true, 4, 1, 1, -1, DateTime.MinValue, rgdfData, 0, false, -1); rg.Add(new MemoryItem(null, sdCurrent, nAction, null, sdNext, dfReward, bTerminated, 0, 0)); strLine = sr.ReadLine(); } } foreach (MemoryItem m in rg) { Add(m); } }
/// <summary> /// The FromProto function parses a RawProto into a new Octaves. /// </summary> /// <param name="rp">Specifies the RawProto to parse.</param> /// <returns>The new Octaves is returned.</returns> public static Octaves FromProto(RawProto rp) { string strVal; string strLayer = ""; if ((strVal = rp.FindValue("layer")) != null) { strLayer = strVal; } int nIterations = 10; if ((strVal = rp.FindValue("iterations")) != null) { nIterations = int.Parse(strVal); } double dfSigmaStart = 0; if ((strVal = rp.FindValue("sigma_start")) != null) { dfSigmaStart = BaseParameter.ParseDouble(strVal); } double dfSigmaEnd = 0; if ((strVal = rp.FindValue("sigma_end")) != null) { dfSigmaEnd = BaseParameter.ParseDouble(strVal); } double dfStepStart = 1.5; if ((strVal = rp.FindValue("step_start")) != null) { dfStepStart = BaseParameter.ParseDouble(strVal); } double dfStepEnd = 1.5; if ((strVal = rp.FindValue("step_end")) != null) { dfStepEnd = BaseParameter.ParseDouble(strVal); } bool bSave = false; if ((strVal = rp.FindValue("save")) != null) { bSave = bool.Parse(strVal); } double dfPctOfDetail = .25; if ((strVal = rp.FindValue("pct_of_prev_detail")) != null) { dfPctOfDetail = BaseParameter.ParseDouble(strVal); } return(new Octaves(strLayer, nIterations, dfSigmaStart, dfSigmaEnd, dfStepStart, dfStepEnd, bSave, dfPctOfDetail)); }