Я нахожу некоторые проблемы с импортом обучения моделей по тензорным и керасовым моделям python. С flask легко, но с использованием deeplearning4j или org.tensorflow у меня есть некоторые проблемы. кажется, что библиотеки java все еще не разработаны.
В этом случае токенизация с использованием pickle в flask отличается от использования json в deeplearning4j.
Это код в flask и вывод для строки «Я оспариваю с моей ипотекой вводящий в заблуждение вводящий в заблуждение термин»:
@app.route('/')
def home():
return flask.render_template('complaints_classify.html')
@app.route('/predict',methods=['POST'])
def predict():
print('preditct\n')
a = request.form['complaint']
print(a)
#invoke the model
import tensorflow as tf
#loaded_model =tf.keras.models.load_model('/home/ean/anaconda3/envs/my_env/flask_projects/models/modelLstm.h5')
loaded_model =tf.keras.models.load_model('/home/ean/anaconda3/envs/my_env/modelLstm.h5')
loaded_model.summary()
# loading
with open('/home/ean/anaconda3/envs/my_env/tokenizer.pickle', 'rb') as handle:
tokenizer = pickle.load(handle)
print(tokenizer.get_config())
# load weights into new ()model
print("Loaded model from disk")
labels = ['Credit card','Debt collection','Credit Reporting','Mortgage','Payday loan','Student loan']
text = [a]
text = np.array(text)
print("text en numpy:\n")
print(text)
to_exclude = '!"#$%&()*+-./:;<=>?@[\]^_`{|}~\t\n'
X = tokenizer.texts_to_sequences(text)
print(X)
X = pad_sequences(X, maxlen=50)
print(X)
pred= loaded_model.predict(X)
print(pred)
print(np.argmax(pred))
print(text, labels[np.argmax(pred)])
data = {labels[np.argmax(pred)]}
return flask.render_template('complaints_classify.html',complaint=format(text),prediction_text='{}'.format(data))
И вывод:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]]
Очень хорошо предсказываю:
[«Я оспариваю с моей ипотекой вводящий в заблуждение вводящий в заблуждение термин»] Ипотека
И это код, использующий DeepLearning4j beta6.
public class GuestbookController {
@RequestMapping(value = "/micro-service")
public String hello() throws Exception {
String modeloStr = "";
try {
System.out.println("Estamos en:"+InetAddress.getLocalHost().getHostAddress());
String[] labels = {"Credit card","Debt collection","Credit Reporting","Mortgage","Payday loan","Student loan"};
// load the model
//String simpleMlp = new ClassPathResource("/home/oscar/curso/microservicio-ML/model/modelLstm.h5").getFile().getPath();
String simpleMlp = new ClassPathResource("modelLstm.h5").getFile().getPath();
System.out.println("Fichero leido\n");
MultiLayerNetwork model = KerasModelImport.importKerasSequentialModelAndWeights(simpleMlp,false);
for(int i= 0;i<model.getLayers().length;i++){
modeloStr=modeloStr+(model.getLayers()[i]).getConfig()+"\n";
}
System.out.println(modeloStr);
String[] texts = new String[] {"I am disputing with my mortgage confusing misleading term"};
String path = "tokenizer.json";
KerasTokenizer tokenizer = KerasTokenizer.fromJson(Resources.asFile(path).getAbsolutePath());
//KerasTokenizer tokenizer = new KerasTokenizer(50);
//tokenizer.fitOnTexts(texts));
Integer[][] sequences = tokenizer.textsToSequences(texts);
Integer [][] tmp10=sequences;
String tmp11 ="";
for(int p= 0;p<tmp10.length;p++){
for (int q=0;q<tmp10[p].length;q++){
tmp11=tmp11+(tmp10[p][q])+"\n";
}
}
System.out.println("-------Sequences:"+tmp11);
System.out.println(tokenizer.textsToMatrix(texts, TokenizerMode.FREQ));
И вывод:
------- Последовательности: 1
La salida de: tokenizer.textsToMatrix (тексты, TokenizerMode.FREQ)
[[0, 1.0000 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
Я очень ценю любую помощь о том, как
Большое спасибо !!!