Python 带keras的解密器

Python 带keras的解密器,python,tensorflow,keras,Python,Tensorflow,Keras,我正在用python3制作一个神经网络破译器,这是我到目前为止所做的: from sklearn.model_selection import train_test_split import numpy as np import keras from keras.models import Sequential from keras.layers.core import Dense import pandas as pd from sklearn.preprocessing import Lab

我正在用python3制作一个神经网络破译器,这是我到目前为止所做的:

from sklearn.model_selection import train_test_split
import numpy as np
import keras
from keras.models import Sequential
from keras.layers.core import Dense
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import csv

LE = LabelEncoder()

dado = pd.read_csv('teste.csv', header=None)
print("codigo:",dado)
dado = LE.fit_transform(dado)

np.random.seed(2)

classification = 26

dataset = pd.read_csv('base.csv', header=None)

print("letras:",dataset[0])
print("\n")

print("codigo:",dataset[1])
print("\n")

dataset[0] = LE.fit_transform(dataset[0])
dataset[1] = LE.fit_transform(dataset[1])


print("letras:",dataset[0])
print("\n")
print("codigo:",dataset[1])


# Define dados de treinamento
X = dataset[0].values

#print("x: ",X)
# Define a saida padrao
Y = dataset[1].values
#print("\ny: ",Y)

x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.66, random_state=5)

#print("x_train:", x_train,"\n x_test:", x_test, "\ny_train:",y_train,"\ny_test:",y_test)
                                                

y_train = keras.utils.to_categorical(y_train-1, classification)
y_test = keras.utils.to_categorical(y_test-1, classification)

#print("\ny_train:",y_train,"\ny_test: ",y_test)

# A rede será uma MLP com duas entradas, uma camada intermediária com 3 neurônios e
# uma camada de saída com um neurônio.
model = Sequential()
model.add(Dense(26, input_dim=1, activation='relu'))
model.add(Dense(classification, activation='softmax'))

# Mostra os parâmetros da RNA
#model.summary()

# 
model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['binary_accuracy'])
print("OK")

# Executa o treinamento da MLP
model.fit(x_train, y_train, batch_size=1, epochs=1000, validation_data=(x_test, y_test))

# Executa a MLP após o treinamento
#print(model.predict(X))
#print(model.predict(dado))


prediction =model.predict(dado)

print("prediction: ",prediction)



#pred_name = dado[np.argmax(prediction)]
我正在使用base.csv来训练:

 A,'@'
 B,'#'
 C,'$'
 D,'%'
 E,'&'
 F,'*'
 G,'1'
 H,'2'
 I,'3'
 J,'4'
 K,'5'
 L,'6'
 M,'7'
 N,'8'
 O,'9'
 P,'0'
 Q,a
 R,b
 S,c
 T,d
 U,e
 V,f
 X,g
 W,h
 Y,i
 Z,j
我想解密这个消息:

'@e*c$&7e3d96&1@7'
显然,培训是正确的,我收到了predict()的值,我将列出其中一些:

 [1.67683919e-03 1.00730495e-05 3.00646033e-02 3.47359193e-04
  7.34448224e-10 2.07794699e-07 6.91458354e-07 9.16662440e-02
  1.12631470e-01 1.55544106e-03 1.33347882e-07 1.26970816e-08
  1.17909266e-07 2.84538746e-01 2.04548487e-04 4.61375207e-01
  4.84018710e-06 6.99752900e-06 1.09326131e-04 4.26771911e-03
  2.73230253e-03 1.45343272e-03 1.31152268e-03 5.98493521e-09
  3.70860286e-03 2.33352231e-03]
 [1.35914271e-03 6.58475028e-06 2.74186116e-02 2.63669877e-04
  3.23479521e-10 1.15685609e-07 4.04968659e-07 8.76267478e-02
  1.08614832e-01 1.25834497e-03 7.29217859e-08 6.29246166e-09
  6.41369695e-08 2.85867929e-01 1.51908389e-04 4.74235952e-01
  3.07537766e-06 4.51551887e-06 7.91385319e-05 3.59652541e-03
  2.26239045e-03 1.17159961e-03 1.05227530e-03 2.87827917e-09
  3.10653565e-03 1.91950181e-03]]
这是加密文件的输入代码:

dado = pd.read_csv('teste.csv', header=None)
dado = LE.fit_transform(dado)

如何将predict()结果显示回字符以破译消息?

您不能通过向后通过网络将数据转换回原始数据。你需要训练另一个神经网络将数据转换回原始数据。向第二个网络输入您的
y\u列车
,并使其预测您的
x\u列车
,如下所示:

another_model.fit(y_train, x_train, ...)
唯一的其他方法是使用TensorFlow提供的一个很棒的教程