MagicText-1.3-WMHA / inference.py
BIGAI-models's picture
Create inference.py
03ee349 verified
Raw
History Blame Contribute Delete
4.47 kB
import torch
import torch.nn as nn
itw = {
0: '\t',
1: ' ',
2: '!',
3: '"',
4: '#',
5: '$',
6: '%',
7: '&',
8: '(',
9: ')',
10: '*',
11: '+',
12: ',',
13: '-',
14: '.',
15: '/',
16: '0',
17: '1',
18: '2',
19: '3',
20: '4',
21: '5',
22: '6',
23: '7',
24: '8',
25: '9',
26: ':',
27: ';',
28: '=',
29: '?',
30: '@',
31: '[',
32: ']',
33: '_',
34: '«',
35: '»',
36: '—',
37: '–',
38: '’',
39: '“',
40: '”',
41: '„',
42: '…',
43: '•',
44: '°',
45: '·',
46: '€',
47: '№',
48: 'Ё',
49: 'А',
50: 'Б',
51: 'В',
52: 'Г',
53: 'Д',
54: 'Е',
55: 'Ж',
56: 'З',
57: 'И',
58: 'Й',
59: 'К',
60: 'Л',
61: 'М',
62: 'Н',
63: 'О',
64: 'П',
65: 'Р',
66: 'С',
67: 'Т',
68: 'У',
69: 'Ф',
70: 'Х',
71: 'Ц',
72: 'Ч',
73: 'Ш',
74: 'Щ',
75: 'Ъ',
76: 'Ы',
77: 'Ь',
78: 'Э',
79: 'Ю',
80: 'Я',
81: 'а',
82: 'б',
83: 'в',
84: 'г',
85: 'д',
86: 'е',
87: 'ж',
88: 'з',
89: 'и',
90: 'й',
91: 'к',
92: 'л',
93: 'м',
94: 'н',
95: 'о',
96: 'п',
97: 'р',
98: 'с',
99: 'т',
100: 'у',
101: 'ф',
102: 'х',
103: 'ц',
104: 'ч',
105: 'ш',
106: 'щ',
107: 'ъ',
108: 'ы',
109: 'ь',
110: 'э',
111: 'ю',
112: 'я',
113: 'ё',
114: '‐',
115: '\u200b'
}
wti = {
'\t': 0,
' ': 1,
'!': 2,
'"': 3,
'#': 4,
'$': 5,
'%': 6,
'&': 7,
'(': 8,
')': 9,
'*': 10,
'+': 11,
',': 12,
'-': 13,
'.': 14,
'/': 15,
'0': 16,
'1': 17,
'2': 18,
'3': 19,
'4': 20,
'5': 21,
'6': 22,
'7': 23,
'8': 24,
'9': 25,
':': 26,
';': 27,
'=': 28,
'?': 29,
'@': 30,
'[': 31,
']': 32,
'_': 33,
'«': 34,
'»': 35,
'—': 36,
'–': 37,
'’': 38,
'“': 39,
'”': 40,
'„': 41,
'…': 42,
'•': 43,
'°': 44,
'·': 45,
'€': 46,
'№': 47,
'Ё': 48,
'А': 49,
'Б': 50,
'В': 51,
'Г': 52,
'Д': 53,
'Е': 54,
'Ж': 55,
'З': 56,
'И': 57,
'Й': 58,
'К': 59,
'Л': 60,
'М': 61,
'Н': 62,
'О': 63,
'П': 64,
'Р': 65,
'С': 66,
'Т': 67,
'У': 68,
'Ф': 69,
'Х': 70,
'Ц': 71,
'Ч': 72,
'Ш': 73,
'Щ': 74,
'Ъ': 75,
'Ы': 76,
'Ь': 77,
'Э': 78,
'Ю': 79,
'Я': 80,
'а': 81,
'б': 82,
'в': 83,
'г': 84,
'д': 85,
'е': 86,
'ж': 87,
'з': 88,
'и': 89,
'й': 90,
'к': 91,
'л': 92,
'м': 93,
'н': 94,
'о': 95,
'п': 96,
'р': 97,
'с': 98,
'т': 99,
'у': 100,
'ф': 101,
'х': 102,
'ц': 103,
'ч': 104,
'ш': 105,
'щ': 106,
'ъ': 107,
'ы': 108,
'ь': 109,
'э': 110,
'ю': 111,
'я': 112,
'ё': 113,
'‐': 114,
'\u200b': 115,
}
class AI(nn.Module):
def __init__(self):
super().__init__()
self.embed = nn.Embedding(len(wti), 128)
self.lstm = nn.LSTM(128, 128, batch_first=True)
self.attention = nn.MultiheadAttention(embed_dim=128, num_heads=4, batch_first=True)
self.layernorm_after = nn.LayerNorm(128)
self.linear = nn.Linear(128, len(itw))
def forward(self, x):
x = self.embed(x)
x_origin = x
x, _ = self.lstm(x)
x_origin = x
x, _ = self.attention(x, x, x)
x+= x_origin
x = self.layernorm_after(x)
x = self.linear(x)
x = x[:, -1, :]
return x
model = AI()
model.to('cuda')
model.load_state_dict(torch.load('patch'))
for _ in range(100):
a = input()
a = list(a)
ss = []
for i in a:
try:
ss.append(wti[i])
except:
ss.append(wti[' '])
for i in range(100):
sss = torch.tensor(ss).unsqueeze(0)
otv = model(sss)
otv = torch.argmax(otv, dim=1).item()
ss.append(otv)
txtx = ''
for i in ss:
try:
txtx += itw[i]
except:
pass
print(txtx)
ss = []