diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2023-01-23 21:39:38 +0530 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2023-01-23 21:39:38 +0530 |
commit | 45c8fcf837fc77829cf5df892385f2c0eb0f0b9c (patch) | |
tree | 45a893c43d93a7eff44cf7d94b7eefb998392bf2 /models | |
parent | 1e5022ef37a56a8a2788d164298150c5737a106b (diff) |
add models
Diffstat (limited to 'models')
-rw-r--r-- | models/index.html | 11 | ||||
-rw-r--r-- | models/tensorspeare/favicon.ico | 0 | ||||
-rw-r--r-- | models/tensorspeare/index.html | 16 | ||||
-rw-r--r-- | models/tensorspeare/jsmodel/group1-shard1of4.bin | bin | 0 -> 4194304 bytes | |||
-rw-r--r-- | models/tensorspeare/jsmodel/group1-shard2of4.bin | bin | 0 -> 4194304 bytes | |||
-rw-r--r-- | models/tensorspeare/jsmodel/group1-shard3of4.bin | bin | 0 -> 4194304 bytes | |||
-rw-r--r-- | models/tensorspeare/jsmodel/group1-shard4of4.bin | bin | 0 -> 3491076 bytes | |||
-rw-r--r-- | models/tensorspeare/jsmodel/model.json | 1 | ||||
-rw-r--r-- | models/tensorspeare/model.h5 | bin | 0 -> 16093616 bytes | |||
-rw-r--r-- | models/tensorspeare/tensorspeare.js | 34 |
10 files changed, 62 insertions, 0 deletions
diff --git a/models/index.html b/models/index.html new file mode 100644 index 0000000..3dcf1c4 --- /dev/null +++ b/models/index.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Models +--- +<div class="flex flex-row flex-wrap" onclick="window.location='/models/tensorspeare'"> + <div class="blog-block flex-col break-words transform hover:bg-gray-900 + justify-start max-w-sm" style="cursor: pointer;"> + <a class="text-xl text-white mt-2 border-b pb-1 hover:underline">Tensorspeare</a> + <a class="text-lg text-gray-400 pt-2">A TensorFlow model which generates text that sounds like it was written by Shakespeare </a> + </div> +</div> diff --git a/models/tensorspeare/favicon.ico b/models/tensorspeare/favicon.ico new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/models/tensorspeare/favicon.ico diff --git a/models/tensorspeare/index.html b/models/tensorspeare/index.html new file mode 100644 index 0000000..5f5f8ab --- /dev/null +++ b/models/tensorspeare/index.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Models +--- + +<script src="/assets/js/tf.min.js"></script> +<script src="tensorspeare.js"></script> + +<div style="display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100vw; max-height: 100vh; gap: 10px; padding-top: 10px"> + <div> + <label for="numletters" class="block mb-2 text-sm font-medium text-white">Number Of Letters To Generate</label> + <input type="number" id="numletters" style="font-size: 1.125rem; border-radius: 0.5rem; display: block; width: 100%; padding: 0.625rem; background-color: #2f3238; border-color: #444444; placeholder-color: #444444; color: #ffffff; value='1000';" value="1000"> + </div> + <button id="mybutton" class="button" style="color: #fff; background-color: #6a6980; border: none; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px;" onclick="runModel();">Generate</button> + <textarea readonly id="generated_text" rows="10" style="width: 55%; min-width: 400px; background-color: #1f1d29; resize:none; color: #FFFFFF; outline: none"></textarea> +</div> diff --git a/models/tensorspeare/jsmodel/group1-shard1of4.bin b/models/tensorspeare/jsmodel/group1-shard1of4.bin Binary files differnew file mode 100644 index 0000000..e206161 --- /dev/null +++ b/models/tensorspeare/jsmodel/group1-shard1of4.bin diff --git a/models/tensorspeare/jsmodel/group1-shard2of4.bin b/models/tensorspeare/jsmodel/group1-shard2of4.bin Binary files differnew file mode 100644 index 0000000..3505996 --- /dev/null +++ b/models/tensorspeare/jsmodel/group1-shard2of4.bin diff --git a/models/tensorspeare/jsmodel/group1-shard3of4.bin b/models/tensorspeare/jsmodel/group1-shard3of4.bin Binary files differnew file mode 100644 index 0000000..8613500 --- /dev/null +++ b/models/tensorspeare/jsmodel/group1-shard3of4.bin diff --git a/models/tensorspeare/jsmodel/group1-shard4of4.bin b/models/tensorspeare/jsmodel/group1-shard4of4.bin Binary files differnew file mode 100644 index 0000000..e953467 --- /dev/null +++ b/models/tensorspeare/jsmodel/group1-shard4of4.bin diff --git a/models/tensorspeare/jsmodel/model.json b/models/tensorspeare/jsmodel/model.json new file mode 100644 index 0000000..0de300d --- /dev/null +++ b/models/tensorspeare/jsmodel/model.json @@ -0,0 +1 @@ +{"format": "layers-model", "generatedBy": "keras v2.4.0", "convertedBy": "TensorFlow.js Converter v4.2.0", "modelTopology": {"keras_version": "2.4.0", "backend": "tensorflow", "model_config": {"class_name": "Sequential", "config": {"name": "sequential_1", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [1, null], "dtype": "float32", "sparse": false, "ragged": false, "name": "embedding_1_input"}}, {"class_name": "Embedding", "config": {"name": "embedding_1", "trainable": true, "batch_input_shape": [1, null], "dtype": "float32", "input_dim": 65, "output_dim": 256, "embeddings_initializer": {"class_name": "RandomUniform", "config": {"minval": -0.05, "maxval": 0.05, "seed": null}}, "embeddings_regularizer": null, "activity_regularizer": null, "embeddings_constraint": null, "mask_zero": false, "input_length": null}}, {"class_name": "GRU", "config": {"name": "gru_1", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": true, "unroll": false, "time_major": false, "units": 1024, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "recurrent_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2, "reset_after": false}}, {"class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 65, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}]}}}, "weightsManifest": [{"paths": ["group1-shard1of4.bin", "group1-shard2of4.bin", "group1-shard3of4.bin", "group1-shard4of4.bin"], "weights": [{"name": "dense_1/kernel", "shape": [1024, 65], "dtype": "float32"}, {"name": "dense_1/bias", "shape": [65], "dtype": "float32"}, {"name": "embedding_1/embeddings", "shape": [65, 256], "dtype": "float32"}, {"name": "gru_1/gru_cell_1/kernel", "shape": [256, 3072], "dtype": "float32"}, {"name": "gru_1/gru_cell_1/recurrent_kernel", "shape": [1024, 3072], "dtype": "float32"}, {"name": "gru_1/gru_cell_1/bias", "shape": [3072], "dtype": "float32"}]}]}
\ No newline at end of file diff --git a/models/tensorspeare/model.h5 b/models/tensorspeare/model.h5 Binary files differnew file mode 100644 index 0000000..8bbd76d --- /dev/null +++ b/models/tensorspeare/model.h5 diff --git a/models/tensorspeare/tensorspeare.js b/models/tensorspeare/tensorspeare.js new file mode 100644 index 0000000..e14fd08 --- /dev/null +++ b/models/tensorspeare/tensorspeare.js @@ -0,0 +1,34 @@ +async function generate_text(model, idx2char, char2idx, btn, generated_text, start_string = 'ROMEO:', num_generate = 1000, temperature = 0.1) { + let input_eval = start_string.split('').map(s => char2idx[s]); + input_eval = tf.tensor1d(input_eval); + input_eval = tf.reshape(input_eval, [1, input_eval.size]); + + let text_generated = []; + + model.resetStates(); + for (let i = 0; i < num_generate; i++) { + btn.textContent = `Generating ${Math.trunc(i/num_generate*100)}%` + let predictions = model.predict(input_eval); + predictions = predictions.squeeze(); + predictions = predictions.div(temperature); + let predicted_id = await tf.multinomial(predictions, 1).dataSync()[0]; + input_eval = tf.expandDims([predicted_id], 0); + text_generated.push(idx2char[predicted_id]); + await new Promise(resolve => setTimeout(resolve, 5)); + } + + generated_text.value = start_string + '\n' + text_generated.join(''); +} + +async function runModel(num_generate) { + btn = document.getElementById("mybutton") + btn.textContent = "Generating 0%" + + generated_text = document.getElementById("generated_text") + char2idx = {'\n': 0, ' ': 1, '!': 2, '$': 3, '&': 4, "'": 5, ',': 6, '-': 7, '.': 8, '3': 9, ':': 10, ';': 11, '?': 12, 'A': 13, 'B': 14, 'C': 15, 'D': 16, 'E': 17, 'F': 18, 'G': 19, 'H': 20, 'I': 21, 'J': 22, 'K': 23, 'L': 24, 'M': 25, 'N': 26, 'O': 27, 'P': 28, 'Q': 29, 'R': 30, 'S': 31, 'T': 32, 'U': 33, 'V': 34, 'W': 35, 'X': 36, 'Y': 37, 'Z': 38, 'a': 39, 'b': 40, 'c': 41, 'd': 42, 'e': 43, 'f': 44, 'g': 45, 'h': 46, 'i': 47, 'j': 48, 'k': 49, 'l': 50, 'm': 51, 'n': 52, 'o': 53, 'p': 54, 'q': 55, 'r': 56, 's': 57, 't': 58, 'u': 59, 'v': 60, 'w': 61, 'x': 62, 'y': 63, 'z': 64} + + idx2char = ['\n', ' ', '!', '$', '&', "'", ',', '-', '.', '3', ':', ';', '?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] + const model = await tf.loadLayersModel('/models/tensorspeare/jsmodel/model.json'); + generate_text(model, idx2char, char2idx, btn, generated_text, num_generate=num_generate); + btn.textContent = "Generate" +} |