Python mu yenicek C++ mı görelim(yapayzeka hız testi)

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,221
Selam!

Bu deneyimizde C++ ile ve python ile eğitilmiş iki ayrı yapayzeka modelinin hangisi daha hızlı adlı konuyu işliyeceğiz.

Kimseden ses çıkmadığı için bu deneyi kendi kendime yapıcağım c++ dan anlamam ama amazon Q bu işi çözer ya da gpt sonuçta Html yazıyorsa C++ de yazarlar.

(karikatür kaldırıldı)


Elimde en basit üretilecek veri random sayılar karakterler sonucu bir hacker Yz olucak ama olsun bazı yerleri hatalı yada eksik gireceğim buraya yazdığım kodların


Şimdi üretime geçelim
30 karakterlik bir kombinasyon kullanıcağım ki biz farkına varmadan çözme olmasın mili yada nano saniye ile ölçüğümüzde sonuçlar daha gözle görülür olucak diye düşünüyorum

Malzemeler :p
26 + 26 küçük, büyük harfler
10 adet rakam (0-9)
32 Noktalama işareti
---------------------------
94 Toplam

buda eşittir (bunu hesaplayamam)
[imath]94^{30} = 94 x94x94x94x94......x94 =[/imath]
Şükür py var

Python:
from decimal import Decimal

sonuc = Decimal(94) ** Decimal(30)
print(sonuc)

çıktısı : 1.562556061666647947448204321E+59 (rakamı bilen varsa açıklasın :) )
Bu oldukça büyük bir sayı ...bunuda pythonla hallederiz
Python:
from decimal import Decimal

sonucum = 1.562556061666647947448204321E+59
Gostergari = Decimal(sonucum)
print(Gostergari)

Tam sayımız kombinasyonların tutarı : 156255606166664786224679745667141936589787412697514801889280

bu güzel en azından farkı rahatça göreceğiz ... umarım bilgisayar patlamaz

her karakterin .csv dosyasında 2byte oldugunu ögrendim
Python:
uzunluk = 30
herkarakter = 2
yenisayı = 1

kombinasyonar = 156255606166664786224679745667141936589787412697514801889280

hesaplanacak = kombinasyonar * (uzunluk * herkarakter + yenisayı)
hesaplanan = hesaplanacak / (1024 ** 3)

print(f"Tahmini dosya boyutu: {hesaplanan:.2f} GB")

Tahmini dosya boyutu: 8876986779427670133312849020150036261295837511942144.00 GB
Gb çevir Tb:
gb = 8.876986779427670133312849020150036261295837511942144
tb = gb / 1024

print(f"{gb:.2f} GB, eşdeğerdir: {tb:.2f} TB")

8.88 GB, eşdeğerdir: 0.01 TB

9GB bizi bozmaz devam edelim

Python:
def uretim(length):
    characters = string.ascii_letters + string.digits + string.punctuation
    combinations = set()
fonksiyonu ile üretime başladım her 10.000 de 0.1 saniye sleep ile sorunsuz ilerliyor

Ekran Görüntüsü - 2023-12-15 16-22-36.png


bilgisayar bu karadarına yetti bunada şükür
Ekran Görüntüsü - 2023-12-15 16-52-15.png


şimdi beynim durdu 2.496.447.360 byte içinde kaç kombinasyon var bilmek istiyorum
buda toplam karakter 30 = byte / toplambyte edersanırım burda hatam olabilir emin değilim kul yapısı sonuçta

Toplam byte'dan Kombinasyon hesabı:
byte = 2
total = 2496447360
uzunluk = 30
uzunluk  = (total / byte)
toplamkombis = (uzunluk - byte)
print(f"Toplam kombinasyon sayısı: {toplamkombis}")
Toplam kombinasyon sayısı: 1248223678
 
Last edited by a moderator:
Yenmekten kasit ne? Performans mi? Tasinabilirlik mi? Kolay yazim mi? Debug kolayligi mi?

Performans dersen C, bizim yilancigi dorde katlar sekize boler. O da yetmez, icinden gecer, cigerini soker. :D Digerlerinde yanimiza bile yaklasamaz ama.
 
  • Haha
Reactions: nt
30 karakterlik bir kombinasyon

Aslında orada hesapladığın kombinasyon değil permütasyon oluyor. Kombinasyonda karakterlerin pozisyon önemli değil, sadece varlığı önemli, ama permütasyonda pozisyon da önemli.

Mesela Matlab ile iki tane 0 ... 9 rakam ile kombinasyonunu hesaplarsak:

Kod:
>> nchoosek([0:9], 2)

ans =

     0     1
     0     2
     0     3
     0     4
     0     5
     0     6
     0     7
     0     8
     0     9
     1     2
     1     3
     1     4
     1     5
     1     6
     1     7
     1     8
     1     9
     2     3
     2     4
     2     5
     2     6
     2     7
     2     8
     2     9
     3     4
     3     5
     3     6
     3     7
     3     8
     3     9
     4     5
     4     6
     4     7
     4     8
     4     9
     5     6
     5     7
     5     8
     5     9
     6     7
     6     8
     6     9
     7     8
     7     9
     8     9

Ama iki tane 0 ... 9 arasındaki sayının permütasyonu nedir? 00 ... 99 arasındaki 100 tane tam sayıdır.
 
  • Beğen
Reactions: nt
C++ gibi diller spesifik olarak kullanılacakları cihaz için compile edilmeden runlanamazlar, kısacası compiler indirmen gerekli. Pythonda ise durum bambaşka
 
c++ anlamıyorum ama sanırım çözdüm :D
dili yüklemek gerekliymiş konudan biraz uzak olduğumdan

şimdi ise 2.4 GB veri ile 18 Layer ı olan iki ayrı yz üretiyorum ama cuda yazıp duryor vscode


python VS C++ figth dinggggg

Ekran Görüntüsü - 2023-12-15 22-13-39.png
 
c++ bilen varsa dosyamı atabilirim o eğitebilirmi ben hiç bişey anlamadım bana diyor ki hata ayıkla

Neden ayıklıyım çalış işte bakalım.

Başka bi dünya bu, atmosfer dışı gibi.
 
Orada sorun algoritma ile ilgili, syntax ile ilgili değil. matrixVectorMul fonksiyonu std::vector<double> döndürüyor ve hata olan satırda da iki tane std::vector<double> un toplamı alınıyor. Ama bu toplamın nasıl yapılacağı tanımlı değil, hata onu söylüyor. Algoritmayı bilsem yazarım fonksiyonu da, malesef algoritma konusunda hiçbir fikrim yok.
 
  • Beğen
Reactions: nt
Al sana şablon fonksiyon:

C++:
std::vector<double> operator+(const std::vector<double>& lhs,
                              const std::vector<double>& rhs)
{
    std::vector<double> toplam;
    
    // lhs ve rhs yi topla, artık nasıl toplanması gerekiyorsa,
    // sonucu da "toplam" değişkenine koy

    return toplam;
}

Yalnız şunu da belirteyim. Bu kod çalışır hale gelirse gene python'tan hızlı çalışır, ama verimli bir C++ kodu değil. İyi yazılmış kod bundan kat kat daha hızlı çalıştırılabilir.
 
Gpt bile diyor ki c++ ile yapmak zordur :D
uğraşma diyor aranızda benim pythonda yazdığım kodu aynı şekilde c++ a translate edicek bir uygulama aradım ama hepsi çöp

çünkü gpt ye yazıyorum kodumu o apayrı şeyler yazıyor açıklamarından anladım yoksa c++ da anlamıyorum

ama c++ genel olarak şu yapıda sanırım önce kendine bir oyun alanı oluşturuyorsun sonra o alan içinde istediklerini yapıyorsun buda baya bir zor süreç model eğitimi için

şimdi translate denemeleri yapıcağım

Screenshot 2023-12-16 at 13-48-41 ChatGPT.png
 
Son düzenleme:
Sen aslında algoritmayı önce bana bir anlat. Algoritmayı bilirsem ona göre kodun neresi çalışıyor neresi çalışmıyor anlarım. Mesela iki eşit boyutta vektörü toplamak kolay, bileşenleri tek tek toplaman lazım. Ama vektör boyutları eşit değilse ne olacak? Eşitlenene kadar sıfır mı dolduracağız? Hata mı vereceğiz?
 
  • Beğen
Reactions: nt
python modelimmi kaydettim c++ ile de yapıcam çok az kaldı bu python modelim
Ekran Görüntüsü - 2023-12-16 18-40-21.png

veri seti :
verisetim.png


kombinasyon ve permütasyon hakkında bilgi :
3813A1D5-6ECE-4BD9-B4D0-F9E3C41BD60A.png





C++ çalıştıramadım apı falan diyor kodum hazır apı indir dedim oda ok ama takıldım:(
 

Ekler

  • python_model.zip
    10.1 KB · Görüntüleme: 102
Son düzenleme:
@Sokisati bi okurmusun konuyu yapabilirsen şunları bi yarışıtıralım ben c++ bilmiyorum
 
Bir algoritmayı python ile yazarsan, sen az çalışırsın ama bilgisayar çok çalışır. Eğer C++ ile yazarsan sen çok çalışırsın ama bilgisayar az çalışır.
Şimdi buradan bakınca hangisi daha mantıklı?
 
Benim ya da algoritmanın değil iki yz nin aynı veri setiyle eğitip yapacağı işlemin(aynı işlem) süre olarak farklımı diye merak ediyorum @ex_machina
 
Kafam çok karıştı.
Selam!

Bu deneyimizde C++ ile ve python ile eğitilmiş iki ayrı yapayzeka modelinin hangisi daha hızlı adlı konuyu işliyeceğiz.

Kimseden ses çıkmadığı için bu deneyi kendi kendime yapıcağım c++ dan anlamam ama amazon Q bu işi çözer ya da gpt sonuçta Html yazıyorsa C++ de yazarlar.

27580 eklentisine bak


Elimde en basit üretilecek veri random sayılar karakterler sonucu bir hacker Yz olucak ama olsun bazı yerleri hatalı yada eksik gireceğim buraya yazdığım kodların


Şimdi üretime geçelim
30 karakterlik bir kombinasyon kullanıcağım ki biz farkına varmadan çözme olmasın mili yada nano saniye ile ölçüğümüzde sonuçlar daha gözle görülür olucak diye düşünüyorum

Malzemeler :p
26 + 26 küçük, büyük harfler
10 adet rakam (0-9)
32 Noktalama işareti
---------------------------
94 Toplam

buda eşittir (bunu hesaplayamam)
[imath]94^{30} = 94 x94x94x94x94......x94 =[/imath]
Şükür py var

Python:
from decimal import Decimal

sonuc = Decimal(94) ** Decimal(30)
print(sonuc)

çıktısı : 1.562556061666647947448204321E+59 (rakamı bilen varsa açıklasın :) )
Bu oldukça büyük bir sayı ...bunuda pythonla hallederiz
Python:
from decimal import Decimal

sonucum = 1.562556061666647947448204321E+59
Gostergari = Decimal(sonucum)
print(Gostergari)

Tam sayımız kombinasyonların tutarı : 156255606166664786224679745667141936589787412697514801889280

bu güzel en azından farkı rahatça göreceğiz ... umarım bilgisayar patlamaz

her karakterin .csv dosyasında 2byte oldugunu ögrendim
Python:
uzunluk = 30
herkarakter = 2
yenisayı = 1

kombinasyonar = 156255606166664786224679745667141936589787412697514801889280

hesaplanacak = kombinasyonar * (uzunluk * herkarakter + yenisayı)
hesaplanan = hesaplanacak / (1024 ** 3)

print(f"Tahmini dosya boyutu: {hesaplanan:.2f} GB")

Tahmini dosya boyutu: 8876986779427670133312849020150036261295837511942144.00 GB
Gb çevir Tb:
gb = 8.876986779427670133312849020150036261295837511942144
tb = gb / 1024

print(f"{gb:.2f} GB, eşdeğerdir: {tb:.2f} TB")

8.88 GB, eşdeğerdir: 0.01 TB

9GB bizi bozmaz devam edelim

Python:
def uretim(length):
    characters = string.ascii_letters + string.digits + string.punctuation
    combinations = set()
fonksiyonu ile üretime başladım her 10.000 de 0.1 saniye sleep ile sorunsuz ilerliyor

27582 eklentisine bak

bilgisayar bu karadarına yetti bunada şükür
27583 eklentisine bak

şimdi beynim durdu 2.496.447.360 byte içinde kaç kombinasyon var bilmek istiyorum
buda toplam karakter 30 = byte / toplambyte edersanırım burda hatam olabilir emin değilim kul yapısı sonuçta

Toplam byte'dan Kombinasyon hesabı'dan Kombinasyon hesabı:
byte = 2
total = 2496447360
uzunluk = 30
uzunluk  = (total / byte)
toplamkombis = (uzunluk - byte)
print(f"Toplam kombinasyon sayısı: {toplamkombis}")
Toplam kombinasyon sayısı: 1248223678
Normalde mesaj ile özelden soracaktım ama sorularım burada dursun ki başkaları da faydalansın.
İlk olarak, istediğin tam olarak nedir? Kombinasyon demişsin ama bahsettiğin kavram kombinasyon değil, Timur Aydın hocamızın dediği gibi *sanırım* permütasyon. Ama kelimeler tam olarak 30 karakterden mi oluşacak? Yoksa 30 üst limit mi? Yani aC14* geçerli bir kelime mi? Bir kullandığımız karakteri aynı kelime içinde bir daha kullanabiliyor muyuz?
Verdiğin ifade (94^30), bana tam olarak 30 karakter, ve bir kullanılan karakterin bir daha kullanılabileceğini söylüyor. Ama "kombinasyon" ifadesi aksini söylüyor.
Bir de hatalı c++ kodunu atarsan bir bakayım nasıl yapmışsın, ne hatalar var. Bu senaryo gibi astronomik sayılara ulaştığımız yerlerde algoritma kurma becerisi de çok fark eder çünkü. If-else yerine switch-case kullanmak bile çok şey değiştirir.
 
Buraya yükleyebilirsin @Sokisati taydinhub :tamam2:

main:
#include <iostream>
#include <fstream>
#include <string>
#include <chrono>

void generateStrings(int length, std::string currentString, std::ofstream& outputFile) {
    if (length == 0) {
        outputFile << currentString << std::endl;
        return;
    }

    for (char c = 'A'; c <= 'Z'; ++c) {
        generateStrings(length - 1, currentString + c, outputFile);
    }

    for (char c = 'a'; c <= 'z'; ++c) {
        generateStrings(length - 1, currentString + c, outputFile);
    }

    for (char c = '0'; c <= '9'; ++c) {
        generateStrings(length - 1, currentString + c, outputFile);
    }

    for (char c = 32; c <= 126; ++c) {
        if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')) continue;
        generateStrings(length - 1, currentString + c, outputFile);
    }
}

int main() {
    int length = 30;
    std::string initialString = "";
    std::ofstream outputFile("output.txt");

        auto start = std::chrono::steady_clock::now();
        generateStrings(length, initialString, outputFile);
        auto end = std::chrono::steady_clock::now();
        outputFile.close();
        auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
        std::cout << "Execution time: " << duration.count() << " milliseconds" << std::endl;

    return 0;
}
 
Son düzenleme:
Programı kod olarak eklersen daha okunabilir olur

1709072772318.png
 

Çevrimiçi personel

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,968
Mesajlar
119,057
Üyeler
2,828
Son üye
beysperi

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top