Discuss Scratch

greg1234567890f
Scratcher
1000+ posts

тема о создание нейронных сетей

SHAMAN2016 wrote:

atlz3 wrote:

SHAMAN2016 wrote:

greg1234567890f wrote:

Единственная нормальная нейросеть на скретче которую я нашёл: https://turbowarp.org/977615781?stuck&hqpen&fps=60&turbo
Турбоварп в России заблокирован.
Вот рабочая ссылка: https://dashblocks.github.io/#977615781?stuck&hqpen&fps=60&turbo
ты в html делал сайт
В смвсле “в html”? Это не движок и тем более не язык программирования.
Язык программирования это web который включает в себя HTML и CSS также в веб разработке используется ECMAScript (JavaScript, обычный js в конце концов) а также бывает серверная часть, обычно на Python/Node.js/Java.
Web это не язык программирования, а тоже самое что и World Wide Web (интернет). Там обычно используются языки программирования PHP, JavaScript, WebAssembly (через него можно безопасно запускать программы на C++ и других таких языках в браузере) и Python, но на обычном Java вроде нельзя сайты писать, а Node.js это вроде просто программа для запуска JavaScript без HTML
greg1234567890f
Scratcher
1000+ posts

тема о создание нейронных сетей

Я попросил нейросеть сделать нейросеть и он выдал очень короткую программу на 300 строк, которая даже работает, возможно смогу в этом разобраться и сам понять как сделать
import random
import math
from collections import defaultdict, Counter
from typing import List, Dict, Tuple, Optional
class SimpleLLM:
    """A simple character-level language model using n-grams"""
    
    def __init__(self, n: int = 3):
        """
        Initialize the language model with n-gram size
        
        Args:
            n: Size of n-grams (context window)
        """
        self.n = n
        self.ngrams: Dict[str, Dict[str, int]] = defaultdict(Counter)
        self.start_tokens = []
        self.vocab = set()
        
    def train(self, text: str) -> None:
        """
        Train the model on a text corpus
        
        Args:
            text: Training text
        """
        if len(text) < self.n:
            raise ValueError(f"Text too short for n={self.n}")
        
        # Add special tokens for start and end
        padded_text = "▁" * (self.n - 1) + text + "□"
        
        # Build n-grams
        for i in range(len(padded_text) - self.n):
            context = padded_text[i:i + self.n - 1]
            next_char = padded_text[i + self.n - 1]
            
            self.ngrams[context][next_char] += 1
            self.vocab.add(next_char)
            
            # Track starting contexts
            if i < self.n - 1:
                self.start_tokens.append(context)
    
    def _get_next_char(self, context: str) -> str:
        """
        Get next character based on context using weighted random choice
        
        Args:
            context: Current context string
            
        Returns:
            Predicted next character
        """
        if context not in self.ngrams:
            return random.choice(list(self.vocab)) if self.vocab else " "
        
        # Get frequency distribution for this context
        char_counts = self.ngrams[context]
        total = sum(char_counts.values())
        
        # Weighted random choice
        rand_val = random.random() * total
        cumulative = 0
        
        for char, count in char_counts.items():
            cumulative += count
            if rand_val <= cumulative:
                return char
        
        # Fallback
        return random.choice(list(self.vocab)) if self.vocab else " "
    
    def generate(self, 
                 max_length: int = 100, 
                 temperature: float = 1.0,
                 seed_text: Optional[str] = None) -> str:
        """
        Generate text from the model
        
        Args:
            max_length: Maximum length of generated text
            temperature: Controls randomness (0.0 to 1.0)
            seed_text: Starting text (optional)
            
        Returns:
            Generated text
        """
        if not self.ngrams:
            return "Model not trained yet!"
        
        # Set initial context
        if seed_text:
            # Use seed text if provided
            context = seed_text[-(self.n - 1):]
            if len(context) < self.n - 1:
                context = "▁" * (self.n - 1 - len(context)) + context
            result = seed_text
        else:
            # Start with random context from training
            context = random.choice(self.start_tokens)
            result = context.replace("▁", "")
        
        # Generate characters
        for _ in range(max_length - len(result)):
            # Get prediction with temperature sampling
            if temperature < 1.0:
                # Greedy or tempered sampling
                char = self._get_next_char_with_temperature(context, temperature)
            else:
                # Regular weighted random
                char = self._get_next_char(context)
            
            # Stop if we hit end token
            if char == "□":
                break
                
            result += char
            context = (context + char)[-(self.n - 1):]
        
        return result
    
    def _get_next_char_with_temperature(self, 
                                       context: str, 
                                       temperature: float) -> str:
        """
        Get next character with temperature sampling
        
        Args:
            context: Current context
            temperature: Sampling temperature
            
        Returns:
            Selected character
        """
        if context not in self.ngrams:
            return random.choice(list(self.vocab)) if self.vocab else " "
        
        char_counts = self.ngrams[context]
        
        # Apply temperature to probabilities
        probs = {}
        total = 0
        
        for char, count in char_counts.items():
            # Apply temperature scaling
            scaled = count ** (1.0 / temperature)
            probs[char] = scaled
            total += scaled
        
        # Sample from temperature-adjusted distribution
        rand_val = random.random() * total
        cumulative = 0
        
        for char, prob in probs.items():
            cumulative += prob
            if rand_val <= cumulative:
                return char
        
        return random.choice(list(self.vocab))
    
    def predict_next(self, context: str, top_k: int = 5) -> List[Tuple[str, float]]:
        """
        Predict the most likely next characters
        
        Args:
            context: Context string
            top_k: Number of top predictions to return
            
        Returns:
            List of (character, probability) tuples
        """
        if context not in self.ngrams:
            return []
        
        char_counts = self.ngrams[context]
        total = sum(char_counts.values())
        
        # Calculate probabilities
        predictions = [(char, count / total) 
                      for char, count in char_counts.items()]
        
        # Sort by probability (descending)
        predictions.sort(key=lambda x: x[1], reverse=True)
        
        return predictions[:top_k]
    
    def perplexity(self, text: str) -> float:
        """
        Calculate perplexity of the model on given text
        
        Args:
            text: Text to evaluate
            
        Returns:
            Perplexity score (lower is better)
        """
        if not self.ngrams:
            return float('inf')
        
        padded_text = "▁" * (self.n - 1) + text + "□"
        log_prob_sum = 0
        total_chars = 0
        
        for i in range(len(padded_text) - self.n):
            context = padded_text[i:i + self.n - 1]
            next_char = padded_text[i + self.n - 1]
            
            if context in self.ngrams and next_char in self.ngrams[context]:
                total = sum(self.ngrams[context].values())
                prob = self.ngrams[context][next_char] / total
                log_prob_sum += math.log(prob) if prob > 0 else -float('inf')
            else:
                # Add penalty for unseen n-grams
                log_prob_sum += math.log(1e-10)
            
            total_chars += 1
        
        if total_chars == 0:
            return float('inf')
        
        avg_log_prob = log_prob_sum / total_chars
        return math.exp(-avg_log_prob)
# Example usage and demonstration
def main():
    # Sample training text
    training_text = """
    The quick brown fox jumps over the lazy dog.
    Now is the time for all good men to come to the aid of their party.
    To be or not to be, that is the question.
    All that glitters is not gold.
    A journey of a thousand miles begins with a single step.
    """
    
    # Create and train model
    print("Creating and training model...")
    model = SimpleLLM(n=4)
    model.train(training_text)
    
    # Generate some text
    print("\n--- Generated Text ---")
    for i in range(3):
        text = model.generate(max_length=50, temperature=0.7)
        print(f"Sample {i+1}: {text}")
    
    # Generate with seed text
    print("\n--- Generated with Seed ---")
    seed_text = "The quick"
    generated = model.generate(max_length=60, temperature=0.8, seed_text=seed_text)
    print(f"Seed: '{seed_text}'")
    print(f"Generated: {generated}")
    
    # Show predictions
    print("\n--- Next Character Predictions ---")
    context = "the "
    predictions = model.predict_next(context, top_k=5)
    print(f"After '{context}', most likely next characters:")
    for char, prob in predictions:
        print(f"  '{char}': {prob:.2%}")
    
    # Calculate perplexity
    test_text = "The quick brown"
    perplexity = model.perplexity(test_text)
    print(f"\n--- Model Evaluation ---")
    print(f"Perplexity on '{test_text}': {perplexity:.2f}")
    
    # Interactive generation
    print("\n--- Interactive Mode ---")
    print("Type a starting phrase (or 'quit' to exit):")
    
    while True:
        user_input = input("\nYour text: ").strip()
        if user_input.lower() in ['quit', 'exit', 'q']:
            break
        
        if len(user_input) < model.n - 1:
            print(f"Please enter at least {model.n - 1} characters")
            continue
        
        generated = model.generate(
            max_length=100,
            temperature=0.7,
            seed_text=user_input
        )
        print(f"Generated: {generated}")
if __name__ == "__main__":
    main()
atlz3
Scratcher
9 posts

тема о создание нейронных сетей

SHAMAN2016 wrote:

greg1234567890f wrote:

Единственная нормальная нейросеть на скретче которую я нашёл: https://turbowarp.org/977615781?stuck&hqpen&fps=60&turbo
Турбоварп в России заблокирован.
Вот рабочая ссылка: https://dashblocks.github.io/#977615781?stuck&hqpen&fps=60&turbo
не запрещён он
real_rainbow_cat
New Scratcher
100+ posts

тема о создание нейронных сетей

atlz3 wrote:

(#23)
не запрещён он
он реально больше не открывается у меня, открывается только с впн.
мб потому что ркн блокнул cloudflare и половина интернета отвалилась, включая турбоварп, а он тоже работает на cloudflare…
SHAMAN2016
Scratcher
500+ posts

тема о создание нейронных сетей

greg1234567890f wrote:

atlz3 wrote:

тут мы обсуждаем как сделать нейросеть
Это сделать очень сложно
Даже на C++ очень сложно, а на Scratch ещё сложнее
А на C? А на Node.js? А на Python? А на TypeScript? А на LiveScript (ванильный JS который в браузерах а точнее второе название js, третье это JavaScript).

Last edited by SHAMAN2016 (Today 04:51:43)

SHAMAN2016
Scratcher
500+ posts

тема о создание нейронных сетей

greg1234567890f wrote:

SHAMAN2016 wrote:

atlz3 wrote:

SHAMAN2016 wrote:

greg1234567890f wrote:

Единственная нормальная нейросеть на скретче которую я нашёл: https://turbowarp.org/977615781?stuck&hqpen&fps=60&turbo
Турбоварп в России заблокирован.
Вот рабочая ссылка: https://dashblocks.github.io/#977615781?stuck&hqpen&fps=60&turbo
ты в html делал сайт
В смвсле “в html”? Это не движок и тем более не язык программирования.
Язык программирования это web который включает в себя HTML и CSS также в веб разработке используется ECMAScript (JavaScript, обычный js в конце концов) а также бывает серверная часть, обычно на Python/Node.js/Java.
Web это не язык программирования, а тоже самое что и World Wide Web (интернет). Там обычно используются языки программирования PHP, JavaScript, WebAssembly (через него можно безопасно запускать программы на C++ и других таких языках в браузере) и Python, но на обычном Java вроде нельзя сайты писать, а Node.js это вроде просто программа для запуска JavaScript без HTML
Python не запускается в обычном браузере, он запускается только в сайтах со серверной средой, тоже самое и с Node.js и с Java.
То есть они выполняются на сервере а не на устройстве пользователя когда к примеру под перешел по специальному URL, серверная среда обычно используется для API и т.д.
SHAMAN2016
Scratcher
500+ posts

тема о создание нейронных сетей

real_rainbow_cat wrote:

atlz3 wrote:

(#23)
не запрещён он
он реально больше не открывается у меня, открывается только с впн.
мб потому что ркн блокнул cloudflare и половина интернета отвалилась, включая турбоварп, а он тоже работает на cloudflare…
У меня тоже не открывается, я в МР (кто поймёт тот поймёт), у 5555 не открывается он в ДНР, у Лобо не открывается он в Бурятии !хотя всем это известно вже наверное), точнее у Лобо начал открываться когда он попробывал зайти в него через своего оператора

… Ну и все лооично это узнато через тележку с продуктами (кто понял тот понял)
SHAMAN2016
Scratcher
500+ posts

тема о создание нейронных сетей

greg1234567890f wrote:

atlz3 wrote:

SHAMAN2016 wrote:

greg1234567890f wrote:

Единственная нормальная нейросеть на скретче которую я нашёл: https://turbowarp.org/977615781?stuck&hqpen&fps=60&turbo
Турбоварп в России заблокирован.
Вот рабочая ссылка: https://dashblocks.github.io/#977615781?stuck&hqpen&fps=60&turbo
ты в html делал сайт
У меня кстати тоже сайт есть (я его делал 4 года назад, когда мне было 11 лет, не судите строго)
У меня не грузит, какой-то шуточный браузер (url об этом говорит, но я его не назвал) тоже теперь не грузит.




… Мой сайт был создан когда мне было 9,2 а щас мне 9,7

Last edited by SHAMAN2016 (Today 05:02:31)

greg1234567890f
Scratcher
1000+ posts

тема о создание нейронных сетей

SHAMAN2016 wrote:

greg1234567890f wrote:

SHAMAN2016 wrote:

atlz3 wrote:

SHAMAN2016 wrote:

greg1234567890f wrote:

Единственная нормальная нейросеть на скретче которую я нашёл: https://turbowarp.org/977615781?stuck&hqpen&fps=60&turbo
Турбоварп в России заблокирован.
Вот рабочая ссылка: https://dashblocks.github.io/#977615781?stuck&hqpen&fps=60&turbo
ты в html делал сайт
В смвсле “в html”? Это не движок и тем более не язык программирования.
Язык программирования это web который включает в себя HTML и CSS также в веб разработке используется ECMAScript (JavaScript, обычный js в конце концов) а также бывает серверная часть, обычно на Python/Node.js/Java.
Web это не язык программирования, а тоже самое что и World Wide Web (интернет). Там обычно используются языки программирования PHP, JavaScript, WebAssembly (через него можно безопасно запускать программы на C++ и других таких языках в браузере) и Python, но на обычном Java вроде нельзя сайты писать, а Node.js это вроде просто программа для запуска JavaScript без HTML
Python не запускается в обычном браузере, он запускается только в сайтах со серверной средой, тоже самое и с Node.js и с Java.
То есть они выполняются на сервере а не на устройстве пользователя когда к примеру под перешел по специальному URL, серверная среда обычно используется для API и т.д.
Я знаю. Но я же просто перечислил все те языки которые используются в интернете, и серверные, и клиентские
greg1234567890f
Scratcher
1000+ posts

тема о создание нейронных сетей

SHAMAN2016 wrote:

greg1234567890f wrote:

atlz3 wrote:

SHAMAN2016 wrote:

greg1234567890f wrote:

Единственная нормальная нейросеть на скретче которую я нашёл: https://turbowarp.org/977615781?stuck&hqpen&fps=60&turbo
Турбоварп в России заблокирован.
Вот рабочая ссылка: https://dashblocks.github.io/#977615781?stuck&hqpen&fps=60&turbo
ты в html делал сайт
У меня кстати тоже сайт есть (я его делал 4 года назад, когда мне было 11 лет, не судите строго)
У меня не грузит, какой-то шуточный браузер (url об этом говорит, но я его не назвал) тоже теперь не грузит.




… Мой сайт был создан когда мне было 9,2 а щас мне 9,7
У меня работает:



А о чём url говорит? Это ж просто сервер моего папы

Powered by DjangoBB