Laden...

Forenbeiträge von webco Ingesamt 12 Beiträge

31.01.2011 - 21:07 Uhr

Hallo NeuroCoder,
danke erstmal für die Information. Das mit dem Output habe ich verstanden, ich werde später die Outputs auf 26 hochsetzten, jetzt geht es mir aber erstmal nur darum A von B , zu unterscheiden, damit ich das Prinzip verstehe.
Den zweiten Teil deiner Antwort habe ich noch nicht ganz verstanden

Oftmals funktionieren neuronale Netze besser, wenn man binäre Aktivierungen ({0, 1} oder {-1, 1} als Wertebereich der Neuronen) nimmt.
Das heißt, es könnte helfen, wenn du dein Bild nach Graustufen konvertierst und auf eines der beiden Intervalle normierst.

Warum sollte es bringen das Bild zu Graustufen konvertieren, wenn es schwarz-weiss ist? Dann würden doch immer noch gleiche Werte rauskommen, einer für weiss und einer für schwarz...?

Sry bin totaler Anfänger in dem Gebiet 😉

31.01.2011 - 19:24 Uhr

Hallo,
ich habe einen einfachen Code (mithilfe Aforge Framework) geschrieben, der mithilfe von neuronalen Netzwerken zunächst erkennen soll ob es sich bei einem Bitmap um ein A oder B handelt. Jetzt will ich wissen, ob mein Code prinzipiell funktionieren kann, oder warum nicht.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AForge;
using AForge.Neuro;
using AForge.Neuro.Learning;
using AForge.Math;
using System.Drawing;
namespace Prg1
{
    class Program
    {


        static void Main(string[] args)
        {
        
            Bitmap A= PRG1.Properties.Resources.A;
            
            Bitmap B = PRG1.Properties.Resources.B;

            List<double[]> inputs = new List<double[]>();
            double[] inputA = new double[A.Width * A.Height];
            double[] inputB = new double[A.Width * A.Height];
            
            int index=0;
            for (int x = 0; x < A.Width; x++)
            {
                for (int y = 0; y < A.Height; y++)
                {

                    inputA[index] = (A.GetPixel(x, y).A * A.GetPixel(x, y).B * A.GetPixel(x, y).G == 255 * 255 * 255) ? 0.0 : 1.0;
                    inputB[index] = (B.GetPixel(x, y).B * A.GetPixel(x, y).B * B.GetPixel(x, y).G == 255 * 255 * 255) ? 0.0 : 1.0;                    
                    
                    index++;
                }
            }
            inputs.Add(inputA);
            inputs.Add(inputB);
            
          
            List<double[]> outputs = new List<double[]>();
            outputs.Add(new double[]{1.0} );
            outputs.Add(new double[] { 0.0});
            


            ActivationNetwork network = new ActivationNetwork(new SigmoidFunction(), inputA.Length, 2, 1);
            BackPropagationLearning teacher = new BackPropagationLearning(network);
            network.Randomize();
            
            for (int y = 0; y < 5000; y++)
            {
                teacher.RunEpoch(inputs.ToArray(),outputs.ToArray());   
                Console.WriteLine(y.ToString());         
            }
            for (int x = 0; x < inputs.Count; x++)
            {
                Console.WriteLine("Output: {0} | Desired Output: {1}", Math.Round( network.Compute(inputs[x])[0],0), outputs[x][0]);
            }
            
            Console.ReadLine();
            
        }
    }
}

Die Ressourcen A und B sind Bitmaps (10*10 Pixel) die den Buchstaben A bzw. B in schwarzer Schrift und weißem Hintergrunde enthalten.
Der Code funktioniert nicht, da beide Outputs immer 0 sind..
Liegt das vielleicht an dieser Zeile?

ActivationNetwork network = new ActivationNetwork(new SigmoidFunction(), inputA.Length, 2, 1);

Für was steht der 2. Parameter? Für die Anzahl der hidden-Neurons? Müssen das immer 2 sein, oder woher weiß ich wie viele ich von denen brauch?

Kann mein Ansatz überhaupt funktionieren?

Vielen Dank für Hilfe 👍

29.01.2011 - 11:06 Uhr

Ahh danke, hab meinen Fehler entdeckt:

ActivationNetwork network = new ActivationNetwork(new SigmoidFunction(), 2,2,1);

😃

29.01.2011 - 10:35 Uhr

Hallo ich beschäftige mich zurzeit mit Neoronalen Netzwerken in C#. Ich habe jetzt zum ersten mal versucht ein einfaches Netzwerk mit dem Aforge Framework zu erstellen, das XOR löst. Aber irgendwie was mache ich falsch ?!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AForge;
using AForge.Neuro;
using AForge.Neuro.Learning;
using AForge.Math;
namespace Prg1
{
    class Program
    {


        static void Main(string[] args)
        {
            List<double[]> inputs = new List<double[]>();
            inputs.Add(new double[]{1.0,1.0});
            inputs.Add(new double[] {0.0, 1.0 });
            inputs.Add(new double[] { 1.0, 0.0 });
            inputs.Add(new double[] { 0.0,0.0 });
            List<double[]> outputs = new List<double[]>();
            outputs.Add(new double[]{0.0} );
            outputs.Add(new double[] { 1.0});
            outputs.Add(new double[] { 1.0 });
            outputs.Add(new double[] { 0.0});

            ActivationNetwork network = new ActivationNetwork(new SigmoidFunction(), 2,1);
            BackPropagationLearning teacher = new BackPropagationLearning(network);
            network.Randomize();
            teacher.LearningRate = 0.1;
            for (int y = 0; y < 5000; y++)
            {
                for (int x = 0; x < inputs.Count; x++)
                {
                    teacher.Run(inputs[x], outputs[x]);
                }
            }
            for (int x = 0; x < inputs.Count; x++)
            {
                Console.WriteLine("Input: {0}, {1} | Output: {2} | Desired Output: {3}", inputs[x][0], inputs[x][1], Math.Round( network.Compute(inputs[x])[0],0), outputs[x][0]);
            }
            Console.ReadLine();
            
        }
    }
}

Egal wie viele Iterationen ich mach (hier 5000), ich komme nicht auf die richtigen Outputs:
Bei Input 1,1 kommt als Output 1, richtig wäre 0
Bei Input 0,1 kommt als Output 1, das ist richtig
Bei Input 1,0 kommt als Output 0, richtig wäre 1
Bei Input 0,0 kommt als Output 0, das ist richtig

Weiß jemand was ich falsch mache?

Vielen Dank

webco

30.11.2010 - 19:06 Uhr

Danke für die Infos!

30.11.2010 - 18:46 Uhr

Hallo,
ich arbeite an einem Freeware Programm, das ich ins Netz stellen will. Ich frage mich nur ob in der EXE irgendwelche auslesbaren Daten, Informationen zum Entwickler enthalten sind. Man muss ja sein Visual Studio aktivieren und registrieren, da könnte es ja sein das da irgendwelche Daten in die Exe miteinfließen...
Vielen Dank für Informationen

20.11.2010 - 17:41 Uhr

Ich hab doch den Hotfix schon installiert und es geht jetzt ja auch perfekt auch mit großen Anhängen. Meine Frage war ob das reicht wenn der Hotfix bei mir installiert ist (auf dem PC auf dem es erstellt wird), oder ob der Hotfix bei jedem installiert werden muss der das Programm ausführt?!

20.11.2010 - 15:43 Uhr

Danke, da lag der Fehler ausnahmsweise mal nicht bei mir 😉
Kennt jemand eine andere SMTP-Klasse? Bei der man Anhänge auch über 2MB verschicken kann 🙂

Edit: Ah hab dein Edit3 nicht gelesen, mit Patch funktionierts 🙂
Noch ein Frage bzgl des Patchs: Muss dieser Patch auf jedem PC installiert sein, auf dem das Programm installiert ist, oder reicht es wenn er auf dem PC ist, auf dem das Programm erstellt wird?

20.11.2010 - 11:35 Uhr

Hallo,

public void SendFile()
        {
            if (this.FileOnServer() == true)
            {
                return;
            }
            // Specify the file to be attached and sent.
            // This example assumes that a file named Data.xls exists in the
            // current working directory.
            // Create a message and set up the recipients.
            try
            {
                MailMessage message = new MailMessage(this.GetUsername(), this.GetUsername(),"Test", MD5());


                // Create  the file attachment for this e-mail message.
                Attachment data = new Attachment("Any.jpg", MediaTypeNames.Application.Octet); //Funktioniert
               /*Attachment data = new Attachment("Archiv.7z", MediaTypeNames.Application.Octet); Funktioniert nicht */
                
                // Add the file attachment to this e-mail message.
                message.Attachments.Add(data);

                //Send the message.
                SmtpClient client = new SmtpClient("smtp.mail.yahoo.de", 587);

                client.EnableSsl = false;

                // Add credentials if the SMTP server requires them.
                client.Credentials = new NetworkCredential(this.GetUsername(), this.GetPassword());
                //Send Mail
                client.Send(message);
                this.OnServer = true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message.ToString());
            }
        }

Dies funktioniert bei jeder Datei, egal ob mp3 jpg cs txt rtf usw, außer bei 7z Archiven. Bei 7z Anhängen kommt die Exception in der Zeile von client.Send(message); :

"Fehler beim Senden von Mail."

Screenshot der Exception im Anhang.

Bin ratlos. Würde mich über Hilfe sehr freuen 🙂

09.01.2010 - 08:56 Uhr

Danke 🙂
Das würde funktionieren, wenn ich nicht diesen HTTP Error 417 bekommen würde. 🙁

08.01.2010 - 22:11 Uhr

Guten Abend,
ich beschäftige mich gerade mit HTTP Requests in C#, dabei benutze ich die Klasse wwHTTP (siehe hier). Eine Webseite bereitet mir Schwierigkeiten: Erst müssen POST-Werte hingesandt werden dann bekomme ich als Antwort einen 302 Found und ein location Wert in Form einer URL. Das weiß ich allerdings nur durch LiveHTTPHeaders (Addon für Firefox). Wenn ich die Seite mit meinem C# Programm downloaden will bekommm ich eine leere Seite 😦🙁
Hab mir diese wwHTTP Klasse näher angeschaut, und gesehen dass diese mit der Klasse HttpWebResponse arbeitet:

...
HttpWebResponse Response = (HttpWebResponse) Request.GetResponse();
...

In der Response-Klasse müsste ich diesen Header doch irgendwie auslesen können, oder?
Hab das so probiert:

Response.Headers[0].... mach irgendwas damit...

Aber dann bekomm ich immer den Fehler:

Der Aufruf unterscheidet nicht eindeutig zwischen folgenden Methoden und Eigenschaften: "System.Net.WebHeaderCollection.this[System.Net.HttpResponseHeader]" und "System.Net.WebHeaderCollection.this[System.Net.HttpRequestHeader]"

Vielen Dank 🙂
mfg webco

Im Anhang die wwHTTP Klasse

Edit:
Inzwischen hab ich bemerkt, dass er die Seite gar nicht erfolgreich downloadet sondern einen Fehler ausgibt: HTTP Error 417 Expectation failed
Das ist wirklich nur bei dieser einen Seite so, wenn ich den Request zu einer anderen Seite Leite gibt es keinen Fehler 8o 8o Kann mir jemand weiterhelfen??