in mnist-acgan/index.js [162:249]
async function init() {
// Load MNIST data for display in webpage.
status.textContent = 'Loading MNIST data...';
await loadMnistData();
const LOCAL_MEATADATA_PATH = 'generator/acgan-metadata.json';
const LOCAL_MODEL_PATH = 'generator/model.json';
// Hosted, pre-trained generator model.
const HOSTED_MODEL_URL =
'https://storage.googleapis.com/tfjs-examples/mnist-acgan/dist/generator/model.json';
// Attempt to load locally-saved model. If it fails, activate the
// "Load hosted model" button.
let model;
try {
status.textContent = 'Loading metadata';
const metadata =
await (await fetch(LOCAL_MEATADATA_PATH, {cache: 'no-cache'})).json();
status.textContent = `Loading model from ${LOCAL_MODEL_PATH}...`;
model = await tf.loadLayersModel(
tf.io.browserHTTPRequest(LOCAL_MODEL_PATH, {cache: 'no-cache'}));
await showGeneratorInitially(model);
if (metadata.completed) {
status.textContent =
`Training of ACGAN in Node.js (${metadata.totalEpochs} epochs) ` +
`is completed. `;
} else {
status.textContent = `Training of ACGAN in Node.js is ongoing (epoch ` +
`${metadata.currentEpoch + 1}/${metadata.totalEpochs})... `;
}
if (metadata.currentEpoch < 10) {
status.textContent +=
'(Note: generator results may be bad during the first few epochs ' +
'of training, but should get better as training progresses.) '
}
if (metadata.lastUpdated != null) {
status.textContent +=
` (Saved model was last updated ` +
`${ta.ago(new Date(metadata.lastUpdated))}). `;
}
status.textContent +=
'Loaded locally-saved model! Now click "Generate" or ' +
'adjust the z-space sliders.';
} catch (err) {
console.error(err);
status.textContent =
'Failed to load locally-saved model and/or metadata. ' +
'Please click "Load Hosted Model"';
}
loadHostedModel.addEventListener('click', async () => {
try {
status.textContent = `Loading hosted model from ${HOSTED_MODEL_URL} ...`;
model = await tf.loadLayersModel(HOSTED_MODEL_URL);
loadHostedModel.disabled = true;
await showGeneratorInitially(model);
status.textContent =
`Succesfully loaded hosted model from ${HOSTED_MODEL_URL}. ` +
`Now click "Generate" or adjust the z-space sliders.`;
} catch (err) {
console.error(err);
status.textContent =
`Failed to load hosted model from ${HOSTED_MODEL_URL}`;
}
});
testModel.addEventListener('click', async () => {
generateLatentVector(false);
await generateAndVisualizeImages(model);
drawReals();
});
zSpaceToggleButton.addEventListener('click', () => {
if (slidersContainer.style.display === 'none') {
slidersContainer.style.display = 'block';
zSpaceToggleButton.textContent =
zSpaceToggleButton.textContent.replace('Show ', 'Hide ');
} else {
slidersContainer.style.display = 'none';
zSpaceToggleButton.textContent =
zSpaceToggleButton.textContent.replace('Hide ', 'Show ');
}
});
}