Как сделать нейросеть, переводящую римскую систему чисел в арабскую?
import numpy as np
INPUT_DIM = 1
H_DIM = 5
OUT_DIM = 6
x = np.random.randn(INPUT_DIM)
W1 = np.random.randn(INPUT_DIM, H_DIM)
b1 = np.random.randn(H_DIM)
W2 = np.random.randn(H_DIM, OUT_DIM)
b2 = np.random.randn(OUT_DIM)
def relu(t):
return np.maximum(t, 0)
def softmax(t):
out = np.exp(t)
return out / np.sum(out)
t1 = x @ W1 + b1
h1 = relu(t1)
t2 = h1 @ W2 + b2
z = softmax(t2)
У меня есть простая нейронная сеть. Я хочу подать в первый слой (x) текст, похожий на запись римских чисел. На выходе мне нужно получить запись римских чисел в арабской системе, либо определить, что это невозможно. Я встал в ступор уже на первом этапе. Как передать текст, если слой нейронной сеть принимает только числа?
Входные и выходные данные:
I #1
V #5
MMM #3000
LXXX # 80
CD # 400
MMMCMXCIX # 3999
XXXX #-1
Ответы (1 шт):
Как передать текст, если слой нейронной сеть принимает только числа?
Сопоставить буквам числа. И передавать массив, в котором будут закодированные числа, либо нули, если ничего нет на этой позиции. Но удастся ли такое решить нейросетью - я не уверен.
Пусть у нас в римском числе может быть не больше 10 позиций. Отдельные буквы закодируем так:
I = 1
V = 2
X = 3
L = 4
C = 5
D = 6
M = 7
Тогда конкретные значения будут закодированы так:
I = 1000000000 # 1
V = 2000000000 # 5
MMM = 7770000000 # 3000
LXXX = 4333000000 # 80
CD = 5600000000 # 400
MMMCMXCIX = 7775735120 # 3999
XXXX = 3333000000 # -1
Удастся ли решить эту задачу я не знаю, но вот кодировать можно так.