Wiesław Kurko

Student, Politechnika Rzeszowska im. Ignacego Łukasiewicza

Wypowiedzi

  • Wiesław Kurko
    Wpis na grupie Java w temacie SwingWorker. Problem z zastosowaniem
    20.05.2009, 13:14

    Kod źródłowy tej symulacji jest prosty, jest mi znany podobny przykład. Tak, jest to praca ale nie na zaliczenie. To co opisałem, to jest tylko prosty przykład, przedstawiający mój program. Mam dość dużą paczkę wykonującą czasochłonne obliczenia (duża sieci neuronowe) i chciałem sterować siecią, wyświetlać różnego typu wyniki w kilku oknach itd. W najgorszym razie zostanie tak jak jest, też działa. Aby skorzystać z tego przykładu muszę trochę zmodyfikować klasy. Program mógłby z powodzeniem działać w konsoli i nie byłoby problemów, ale to nie te czasy.

    Dzięki za pomoc.

    Pozdrawiam

  • Wiesław Kurko
    Wpis na grupie Java w temacie SwingWorker. Problem z zastosowaniem
    19.05.2009, 10:52

    Dzięki na odpowiedź. Trochę się rozjaśniło, ale jestem na poziomie podstawowym i sprawia mi to problem. Z powodu braku czasu chyba zrobię to za pomocą dodatkowego obiektu ze statycznymi polami, za pomocą których będą się mogły komunikować obie klasy. Widzę, że będę potrzebował więcej czasu zrozumienie wielowątkowości.

    Jakby ktoś to potrafił wytłumaczyć na prostym przykładzie to byłbym wdzięczny. Myślę, że jeszcze komuś by się to przydało.
    Przykład może składać się z trzech klas:
    - klasa generująca całkowite liczby losowe z konkretnego przedziału np. od 0 do 100 i zlicza ilość trafień danej liczby;
    - klasa znajdująca się w innej paczce tworzy co pewien czas histogram tych wylosowanych liczb;
    - trzecia klasa służy do komunikacji między tymi klasami i ewentualnemu sterowaniu przebiegiem klasy generującej liczby losowe (zatrzymuje, wznawia działanie).
    Klasa pierwsza i druga są oddzielnie od siebie.

    Pozdrawiam

  • Wiesław Kurko
    Wpis na grupie Java w temacie SwingWorker. Problem z zastosowaniem
    17.05.2009, 09:53

    Witam,

    Mam problem z wykorzystaniem SwingWorker. Chcę w oddzielnych plikach stworzyć klasę, która wykonuje czasochłonne obliczenia i interfejs graficzny, który te wyświetla postęp tych obliczeń. Klasa licząca i interfejs graficzny znajdują się w osobnych paczkach. Z tego co czytałem to jest to tworzone w jednym pliku za pomocą klas wewnętrznych. Jest jakiś sposób na rozdzielenie tych klas? Chodzi mi o to aby program liczący co jakiś czas (np. co jedną minutę) wyrzucał wynik, który ma służyć do rysowania wykresu. Co prawda mogę to zrobić w inny sposób, ale wolałbym za pomocą SwingWorker. Chciałbym to zrobić w miarę elegancki sposób. Program działa na liczbach.

  • Wiesław Kurko
    Wpis na grupie Sztuczne sieci neuronowe w temacie Zasada działania Convoutional Neural Network
    12.05.2009, 18:57

    Temat już nie aktualny.

  • Wiesław Kurko
    Wpis na grupie Java w temacie Zapis i odczyt obiektów
    11.05.2009, 09:41

    Za błędy przepraszam i za brak konsekwencji (raz nazwy pl, raz ang a raz moje :| ). Tak, czasami chyba mam za dużo tych błędów.

  • Wiesław Kurko
    Wpis na grupie Java w temacie Zapis i odczyt obiektów
    10.05.2009, 13:16

    Błąd już nie występuje. Nie mam pojęci co powodowało błąd, ale już się naprawiło. Może to system, ale nie będę zgadywał. Jakby komuś było potrzebne to podje metody zapisujące i odczytujące obiekty na/z dysku:
    /**
    * Odczyt
    * @param sciezka do pliku
    * @return pobrany objekt
    */
    public static Object[] getObject(String sciezka) {
    Object[] tf; // tablice Object
    try {
    ObjectInputStream ois =
    new ObjectInputStream(
    new FileInputStream(sciezka)
    );
    tf = (Object[]) ois.readObject();
    ois.close();
    } catch (Exception e) {
    System.out.println("Blad odczytu.\"getObject\"");
    return null;
    }
    System.out.println("Odczyt poprawny \"getObject\"");
    return tf;
    }
    /**
    * Zapis
    * @param wektor
    * @param sciezka
    */
    public static void zapiszObiekt(Object[] wektor, String sciezka){
    try {
    ObjectOutputStream oos =
    new ObjectOutputStream(
    new BufferedOutputStream(
    new FileOutputStream(sciezka)
    )
    );
    oos.writeObject(wektor);
    oos.flush();
    oos.close();
    } catch (Exception e) {
    System.out.println("Blad zapisu do "+sciezka);
    return;
    }
    }Wiesław Kurko edytował(a) ten post dnia 11.05.09 o godzinie 09:13

  • Wiesław Kurko
    Wpis na grupie Java w temacie Zapis i odczyt obiektów
    9.05.2009, 10:55

    Cały kod jest sporych rozmiarów, ale sposób tworzenia, zapisywania jest następujący:

    Object[] objekt=new Object[5];
    objektTemp=new Object[con1Wymiar][6];
    for(int i=0;i<con1Wymiar;i++)
    {
    objektTemp[i][0]=con1[i].getWagi();
    objektTemp[i][1]=con1[i].getDWag();
    objektTemp[i][2]=con1[i].getOldDWag();
    objektTemp[i][3]=con1[i].getBias();
    objektTemp[i][4]=con1[i].getDBias();
    objektTemp[i][5]=con1[i].getOldDBias();
    }
    objekt[0]=objektTemp;

    objektTemp=new Object[con2Wymiar][6];
    for(int i=0;i<con2Wymiar;i++)
    {
    objektTemp[i][0]=con2[i].getWagi();
    objektTemp[i][1]=con2[i].getDWag();
    objektTemp[i][2]=con2[i].getOldDWag();
    objektTemp[i][3]=con2[i].getBias();
    objektTemp[i][4]=con2[i].getDBias();
    objektTemp[i][5]=con2[i].getOldDBias();
    }
    objekt[1]=objektTemp;

    objektTemp=new Object[1][6];
    objektTemp[0][0]=fc1.getWagi();
    objektTemp[0][1]=fc1.getDWag();
    objektTemp[0][2]=fc1.getOldDWag();
    objektTemp[0][3]=fc1.getBias();
    objektTemp[0][4]=fc1.getDBias();
    objektTemp[0][5]=fc1.getOldDBias();
    objekt[2]=objektTemp;

    objektTemp=new Object[1][6];
    objektTemp[0][0]=fc2.getWagi();
    objektTemp[0][1]=fc2.getDWag();
    objektTemp[0][2]=fc2.getOldDWag();
    objektTemp[0][3]=fc2.getBias();
    objektTemp[0][4]=fc2.getDBias();
    objektTemp[0][5]=fc2.getOldDBias();
    objekt[3]=objektTemp;

    objektTemp=new Object[1][6];
    objektTemp[0][0]=fc3.getWagi();
    objektTemp[0][1]=fc3.getDWag();
    objektTemp[0][2]=fc3.getOldDWag();
    objektTemp[0][3]=fc3.getBias();
    objektTemp[0][4]=fc3.getDBias();
    objektTemp[0][5]=fc3.getOldDBias();
    objekt[4]=objektTemp;

    ZapiszObjekt.zapiszObiekt(objekt,
    "SiecV3_3_1\\..\\WspolneWagi\\WB_"+nazwaUczonejSieci);

    jak wynika z kodu wszystko powinno być ok. Może robię jakiś błąd. Lepiej może dopisać nowe klasy do przechowywania tablic i wykorzystać mechanizm serializacji?
    Tak przy okazji. Zapisując tablicę o dużych wymiarach (kilka tyś.) do pliku txt to czas znacząco się wydłuża nawet do kilku minut. Jest to wykładniczy wzrost. Jak można zapisywać wydajnie takie tablice do pliku txt?Wiesław Kurko edytował(a) ten post dnia 09.05.09 o godzinie 10:56

  • Wiesław Kurko
    Wpis na grupie Java w temacie Zapis i odczyt obiektów
    8.05.2009, 18:01

    Witam,

    Tworze tablicę Object, w miej umieszczam tablicę float i zapisuje na pamięci USB. Gdy wczytuje ponownie to liczby zapisane są średnio o 0.02 różne od tych które zapisałem.
    Jak naprawić ten błąd? Może jest inny, lepszy sposób na zapisywanie tablic na dysk?

  • Wiesław Kurko
    Wpis na grupie Sztuczne sieci neuronowe w temacie Zasada działania Convoutional Neural Network
    19.04.2009, 12:13

    Witam,

    Właśnie jestem w trakcie pisania programu implementującego CNN i mam niestety poważne problemy, aby zmusić ją do uczenia się. Czy ktoś się interesuje tym zagadnieniem i byłby w stanie mi pomóc?

    Pozdrawiam
    Wiesław

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do