📄 nxmlinterpreter.vb
字号:
If Not (bmapInput.Width = idata.InputWidth And bmapInput.Height = idata.InputHeight) Then
bmapInput = imageHelper.ShrinkImage(bmapInput, idata.InputWidth, idata.InputHeight, True)
End If
input = imageHelper.ArrayListFromImage(bmapInput)
'''Get the output
If idata.OutputFile <> "" Then
Dim bmapOutput As New Bitmap(idata.OutputFile)
If Not (bmapOutput.Width = idata.OutputWidth And bmapOutput.Height = idata.OutputHeight) Then
bmapOutput = imageHelper.ShrinkImage(bmapOutput, idata.OutputWidth, idata.OutputHeight, True)
End If
output = imageHelper.ArrayListFromImage(bmapOutput)
Else
'''Get the output
Select Case idata.OutputType
Case DataModel.DataType.Array
'''Split this string to arraylist
Dim arraystr() As String = Split(idata.OutputValue.Trim(), ",")
Dim onestr As String
For Each onestr In arraystr
output.Add(CType(onestr, Single))
Next
Case DataModel.DataType.Number
output = patternHelper.ArrayListFromNumber(CType(idata.OutputValue.Trim(), Long), mynn.OutputLayer.Count)
Case DataModel.DataType.Pattern
output = patternHelper.ArrayListFromPattern(idata.OutputValue.Trim)
Case DataModel.DataType.Char
output = patternHelper.ArrayListFromChar(idata.OutputValue.Trim)
End Select
PrintArr("Train: Input: ", input)
PrintArr("Train: Output: ", output)
End If
helper.AddTrainingData(input, output)
End If
Next idata
'''Train the network
Console.WriteLine("Training Or Running Network...")
AddHandler helper.TrainingProgress, AddressOf Me.TrainingProgress
helper.Train(datablock.TrainCount)
'''Loop to run the network
For Each pdata In datablock.PatternDataCollection
input = New ArrayList()
output = New ArrayList()
If datablock.Type = DataModel.BlockType.Run Then
'''Get the input
Select Case pdata.InputType
Case DataModel.DataType.Array
'''Split this string to arraylist
Dim arraystr() As String = Split(pdata.InputValue.Trim(), ",")
Dim onestr As String
For Each onestr In arraystr
input.Add(CType(onestr, Single))
Next
Case DataModel.DataType.Number
input = patternHelper.ArrayListFromNumber(CType(pdata.InputValue.Trim(), Single), mynn.InputLayer.Count)
Case DataModel.DataType.Pattern
input = patternHelper.ArrayListFromPattern(pdata.InputValue.Trim)
Case DataModel.DataType.Char
input = patternHelper.ArrayListFromChar(pdata.InputValue.Trim)
End Select
mynn.RunNetwork(input)
PrintArr("Run: Input:", input)
'''Show the output
output = mynn.GetOutput()
PrintArr("Run: Output:", output)
Dim outstr As String = ""
Select Case pdata.OutputType
Case DataModel.DataType.Array
'''Split this string to arraylist
Dim acount As Long
For acount = 0 To output.Count - 1
outstr = outstr & CType(output(acount), String)
If acount < output.Count - 1 Then outstr = outstr & ","
Next
Case DataModel.DataType.Number
outstr = CType(patternHelper.NumberFromArraylist(output), String)
Case DataModel.DataType.Pattern
outstr = patternHelper.PatternFromArraylist(output)
Case DataModel.DataType.Char
outstr = patternHelper.CharFromArraylist(output)
End Select
pdata.OutputValue = outstr
End If
Next pdata
'''Loop to run the network
For Each idata In datablock.ImageDataCollection
input = New ArrayList()
output = New ArrayList()
If datablock.Type = DataModel.BlockType.Run Then
'''Get the input
Dim bmapInput As New Bitmap(idata.InputFile)
If Not (bmapInput.Width = idata.InputWidth And bmapInput.Height = idata.InputHeight) Then
bmapInput = imageHelper.ShrinkImage(bmapInput, idata.InputWidth, idata.InputHeight, True)
End If
input = imageHelper.ArrayListFromImage(bmapInput)
mynn.RunNetwork(input)
'''Show the output
output = mynn.GetOutput()
PrintArr("Run: Output:", output)
Dim outstr As String = ""
'''Save the output as an image file if required
If idata.OutputFile <> "" Then
Dim bmapOutput As Bitmap = imageHelper.ImageFromArraylist(output, idata.OutputWidth, idata.OutputHeight)
bmapoutput.Save(idata.OutputFile)
End If
Select Case idata.OutputType
Case DataModel.DataType.Array
'''Split this string to arraylist
Dim acount As Long
For acount = 0 To output.Count - 1
outstr = outstr & CType(output(acount), String)
If acount < output.Count - 1 Then outstr = outstr & ","
Next
Case DataModel.DataType.Number
outstr = CType(patternHelper.NumberFromArraylist(output), String)
Case DataModel.DataType.Pattern
outstr = patternHelper.PatternFromArraylist(output)
Case DataModel.DataType.Char
outstr = patternHelper.CharFromArraylist(output)
End Select
idata.OutputValue = outstr
End If
Next idata
Next datablock
'''Save the network
If network.SavePath.Trim = "" Then network.SavePath = network.LoadPath
serializer.SaveNetwork(network.SavePath, mynn)
Next network
Catch ex As Exception
Throw New InterpreterException("Unable to interpret. Invalid file path provided for image data? " & ex.Message, ex)
End Try
'''Update this nxml file
Save(file, nxmlDoc)
End Sub
Private Sub TrainingProgress(ByVal Current As Long, ByVal Max As Long, ByRef cancel As Boolean)
Console.Write(".")
End Sub
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -