eduardmtz commited on
Commit
930d0f4
verified
1 Parent(s): e0d2132

Update test1.html

Browse files
Files changed (1) hide show
  1. test1.html +50 -8
test1.html CHANGED
@@ -5,7 +5,6 @@
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Modelo de Preguntas y Respuestas sobre un PDF</title>
7
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
8
- <!-- Cargar PDF.js -->
9
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.min.js"></script>
10
  <script>
11
  // Aseguramos que pdf.js est茅 cargado antes de configurarlo
@@ -41,8 +40,8 @@
41
  // Entrenar el modelo con el texto extra铆do
42
  modelo = await entrenarModelo(textoPDF);
43
 
44
- // Almacenar el modelo en IndexedDB
45
- almacenarModeloEnIndexedDB(modelo);
46
  }
47
  }
48
 
@@ -72,7 +71,7 @@
72
  // Utilizar el texto extra铆do del PDF para crear un modelo simple
73
  const inputs = tf.tensor([textoPDF.length]);
74
 
75
- // Aqu铆 simplemente estamos creando un modelo muy simple para ilustrar
76
  const modelo = tf.sequential();
77
  modelo.add(tf.layers.dense({ units: 64, inputShape: [1] }));
78
  modelo.add(tf.layers.dense({ units: 32 }));
@@ -84,8 +83,10 @@
84
  return modelo;
85
  }
86
 
87
- // Almacenar el modelo en IndexedDB
88
- function almacenarModeloEnIndexedDB(modelo) {
 
 
89
  const request = indexedDB.open("ModeloPDF", 1);
90
  request.onupgradeneeded = function (event) {
91
  const db = event.target.result;
@@ -97,16 +98,56 @@
97
  const db = event.target.result;
98
  const transaction = db.transaction(["modelos"], "readwrite");
99
  const store = transaction.objectStore("modelos");
100
- store.put(modelo, "modeloPDF");
 
 
 
 
101
  transaction.oncomplete = function () {
102
- console.log("Modelo almacenado en IndexedDB");
103
  };
104
  };
105
  }
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  // Funci贸n para responder una pregunta utilizando el modelo
108
  async function responderPregunta() {
109
  const pregunta = document.getElementById("inputPregunta").value;
 
 
 
 
 
110
  if (modelo && pregunta) {
111
  // Aqu铆 usamos un enfoque simple para tokenizar la pregunta
112
  const tokens = pregunta.split(" "); // Simple divisi贸n en palabras
@@ -123,3 +164,4 @@
123
  </html>
124
 
125
 
 
 
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Modelo de Preguntas y Respuestas sobre un PDF</title>
7
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
 
8
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.min.js"></script>
9
  <script>
10
  // Aseguramos que pdf.js est茅 cargado antes de configurarlo
 
40
  // Entrenar el modelo con el texto extra铆do
41
  modelo = await entrenarModelo(textoPDF);
42
 
43
+ // Almacenar los pesos del modelo en IndexedDB
44
+ almacenarPesosEnIndexedDB(modelo);
45
  }
46
  }
47
 
 
71
  // Utilizar el texto extra铆do del PDF para crear un modelo simple
72
  const inputs = tf.tensor([textoPDF.length]);
73
 
74
+ // Crear un modelo simple
75
  const modelo = tf.sequential();
76
  modelo.add(tf.layers.dense({ units: 64, inputShape: [1] }));
77
  modelo.add(tf.layers.dense({ units: 32 }));
 
83
  return modelo;
84
  }
85
 
86
+ // Almacenar los pesos del modelo en IndexedDB
87
+ async function almacenarPesosEnIndexedDB(modelo) {
88
+ const pesos = await modelo.getWeights();
89
+
90
  const request = indexedDB.open("ModeloPDF", 1);
91
  request.onupgradeneeded = function (event) {
92
  const db = event.target.result;
 
98
  const db = event.target.result;
99
  const transaction = db.transaction(["modelos"], "readwrite");
100
  const store = transaction.objectStore("modelos");
101
+
102
+ // Convertir los pesos a un formato serializable (por ejemplo, a un array de floats)
103
+ const pesosSerializados = pesos.map(peso => peso.arraySync());
104
+ store.put(pesosSerializados, "modeloPesos");
105
+
106
  transaction.oncomplete = function () {
107
+ console.log("Pesos del modelo almacenados en IndexedDB");
108
  };
109
  };
110
  }
111
 
112
+ // Cargar los pesos desde IndexedDB y restaurar el modelo
113
+ async function cargarModeloDesdeIndexedDB() {
114
+ const request = indexedDB.open("ModeloPDF", 1);
115
+ return new Promise((resolve, reject) => {
116
+ request.onsuccess = function (event) {
117
+ const db = event.target.result;
118
+ const transaction = db.transaction(["modelos"], "readonly");
119
+ const store = transaction.objectStore("modelos");
120
+
121
+ const getRequest = store.get("modeloPesos");
122
+ getRequest.onsuccess = async function () {
123
+ const pesosSerializados = getRequest.result;
124
+ if (pesosSerializados) {
125
+ const pesos = pesosSerializados.map(peso => tf.tensor(peso));
126
+ // Crear un nuevo modelo con los pesos cargados
127
+ const modelo = tf.sequential();
128
+ modelo.add(tf.layers.dense({ units: 64, inputShape: [1] }));
129
+ modelo.add(tf.layers.dense({ units: 32 }));
130
+ modelo.add(tf.layers.dense({ units: 1, activation: 'sigmoid' }));
131
+ modelo.setWeights(pesos);
132
+ resolve(modelo);
133
+ } else {
134
+ reject("No se encontraron pesos para el modelo.");
135
+ }
136
+ };
137
+ getRequest.onerror = reject;
138
+ };
139
+ request.onerror = reject;
140
+ });
141
+ }
142
+
143
  // Funci贸n para responder una pregunta utilizando el modelo
144
  async function responderPregunta() {
145
  const pregunta = document.getElementById("inputPregunta").value;
146
+ if (!modelo) {
147
+ // Si no hay modelo, intentar cargarlo desde IndexedDB
148
+ modelo = await cargarModeloDesdeIndexedDB();
149
+ }
150
+
151
  if (modelo && pregunta) {
152
  // Aqu铆 usamos un enfoque simple para tokenizar la pregunta
153
  const tokens = pregunta.split(" "); // Simple divisi贸n en palabras
 
164
  </html>
165
 
166
 
167
+