Форум программистов, компьютерный форум, киберфорум
Konst2016
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Приложения для двух сетей связей(ИНС) - логика и математика

Запись от Konst2016 размещена 05.11.2020 в 13:28

Здравствуйте!Сделал проект на github на ветке https://github.com/kosta2222/t... te_as_pack. Использовал numpy массивы.
Подклассы сети обрабатываю символьную математику для обучения.Например
X=2+1->0.1 0.2 0.2:=<сложение> 0.1 0.1 Y:=<равно> 0.1 0.3.
Получился как пакет в этой ветке.Реализовывал mini-batch обучение, и обучал на логическом ИЛИ и на сложениии.Я приведу весь файл desc.txt из этого проекта:
Более подробное описание:
В папке tests приложение: тестирование на логическое ИЛИ-подавал все примеры, и тестирование сложения-обучал как
s1 ="""
1+0=1;
1+1=2;
1+2=3;
1+3=4;
1+4=5;
1+5=6;
6+1=7;
7+1=8;
8+1=9;
"""
На таком тестирование вычисляла как 3+3 (хотя не было в обучающем наборе), но пока заметил одну ошибку 2+7->8->error.
ex:
(приложение)
(импорты)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from num_fcn._learn_logic_as_symbs import LearnLogicAsSymbs
from num_fcn._learn_math_as_symbs import LearnMathAsSymbs
#... s1 и s2 файлы весов
 
class VmTest:
    def __init__(self, learn_logic_fcn=LearnLogicAsSymbs(load_f_name=s1),
     learn_math_fcn=LearnMathAsSymbs(load_f_name=s2)):
        self._learn_logic_fcn = learn_logic_fcn
        self._learn_math_fcn = learn_math_fcn
 
    def loop(self):
        ICONST = 1
        print('exit - выйти, mode_logic | mode_math')
        shell_running = True
        while shell_running:
            s = input('->')
            if s == 'exit':
                break
            if s == 'mode_logic':
                while shell_running:
                    s1 = input('L->')
                    if s1 == 'exit':
                        break
                    b_c, ans=self._learn_logic_fcn.predict_spec("logic", s1)
                    if b_c == ICONST:
                        print("answer %d" % ans)
                    else:
                        print("uncnown answer")
            elif s == 'mode_math':
                while shell_running:
                    s2 = input('M->')
                    if s2 == 'exit':
                        break
                    b_c, ans=self._learn_math_fcn.predict_spec("math", s2)
                    if b_c == ICONST:
                        print("answer %d" % ans)
                    else:
                        print("uncnown answer")
(консоль)
cmd:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
exit - выйти, mode_logic | mode_math
->mode_logic
L->1|0
mode logic
1)  1|0 answer 1
L->0|0
mode logic
1)  0|0 answer 0
L->0|1
mode logic
1)  0|1 answer 1
L->1|1
mode logic
1)  1|1 answer 1
L->exit
->mode_math
M->1+0
mode math
1)  1+0 answer 1
M->1+1
mode math
1)  1+1 answer 2
M->1+7
mode math
1)  1+7 answer 8
mode math
M->3+3
mode math
1)  3+3 answer 6
M->2+7
mode math
1)  2+7 answer 8->error
M->5+2
mode math
1)  5+2 answer 7
M->exit
->exit
P.S
Но если написать 7+2->9 правильно вычисляет.
05//11//2020
Размещено в Без категории
Просмотров 492 Комментарии 2
Всего комментариев 2
Комментарии
  1. Старый комментарий
    Это довольно интересно. Хотя я бы для себя написал бы рекурсивную функцию sum(a, b)
    Определение:
    1. sum(a, 0) = a
    2. sum(a, b) = sum(a + 1, b - 1)
    Запись от wer1 размещена 06.11.2020 в 09:42 wer1 вне форума
  2. Старый комментарий
    Cool)
    Запись от Konst2016 размещена 07.11.2020 в 16:04 Konst2016 вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.