Files
mixly3/boards/default_src/python_pyodide/generators/tensorflow.js
RXXXBNUer fe343c67ff Pyodide里的Tensorflow目录
可以跑通基本的训练、使用模型过程
2025-10-04 11:24:10 +08:00

98 lines
5.1 KiB
JavaScript

export const tensorflow_init_tensor = function (_, generator) {
var VALUE_INPUT_VAR = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var code = 'tensorflow.tensor(' + VALUE_INPUT_VAR + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_sequential = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var code = 'tensorflow.sequential()';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_layers_dense = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var code = 'tensorflow.layers.dense(units = ' + VALUE_INPUT_VAR1 + ', input_shape = ' + VALUE_INPUT_VAR2 + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_add = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var code = VALUE_INPUT_VAR1 + '.add(' + VALUE_INPUT_VAR2 + ')\n';
return code;
};
export const tensorflow_compile = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = this.getFieldValue("VAR2");
var VALUE_INPUT_VAR3 = this.getFieldValue("VAR3");
var code = VALUE_INPUT_VAR1 + '.compile(loss = "' + VALUE_INPUT_VAR2 + '", optimizer = "' + VALUE_INPUT_VAR3 + '")\n';
return code;
}
export const tensorflow_fit = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR3 = generator.valueToCode(this, "VAR3", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR4 = generator.valueToCode(this, "VAR4", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR5 = generator.valueToCode(this, "VAR5", generator.ORDER_ATOMIC);
var code = 'await ' + VALUE_INPUT_VAR1 + '.fit(' + VALUE_INPUT_VAR2 + ', ' + VALUE_INPUT_VAR3 + ', epochs=' + VALUE_INPUT_VAR4 + ', verbose=' + VALUE_INPUT_VAR5 + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_get_loss = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
var code = VALUE_INPUT_VAR + '.history.loss';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_predict = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var code = VALUE_INPUT_VAR1 + '.predict(' + VALUE_INPUT_VAR2 + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_get_tensor_data = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
var code = "(await " + VALUE_INPUT_VAR1 + ".data())";
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_save_or_export_model = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_NAME1 = generator.valueToCode(this, "NAME1", generator.ORDER_ATOMIC);
var FIELD_NAME = this.getFieldValue("NAME");
var VALUE_INPUT_NAME2 = generator.valueToCode(this, "NAME2", generator.ORDER_ATOMIC).replace(/^'|'$/g, '');
if (FIELD_NAME == "export") {
return `await ${VALUE_INPUT_NAME1}.save("downloads://${VALUE_INPUT_NAME2}")\n`;
}
return `await ${VALUE_INPUT_NAME1}.save("indexeddb://${VALUE_INPUT_NAME2}")\n`;
};
export const tensorflow_use_load_model = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_NAME = generator.valueToCode(this, "NAME", generator.ORDER_ATOMIC).replace(/^'|'$/g, '');
return [`await tensorflow.load_model("${VALUE_INPUT_NAME}")`, generator.ORDER_ATOMIC];
};
export const tensorflow_prepare_picture = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
generator.definitions_['import_numpy'] = 'import numpy';
generator.definitions_['import_PIL'] = 'import PIL';
var VALUE_INPUT_NAME = generator.valueToCode(this, "NAME", generator.ORDER_ATOMIC);
return [`(await tensorflow.prepare_qmyixtxi(tensorflow.tensor(numpy.array(PIL.Image.open(${VALUE_INPUT_NAME}).convert('RGB')))))`, generator.ORDER_ATOMIC];
};