diff --git a/boards/default_src/python_pyodide/blocks/tensorflow.js b/boards/default_src/python_pyodide/blocks/tensorflow.js
new file mode 100644
index 00000000..6ac54c7c
--- /dev/null
+++ b/boards/default_src/python_pyodide/blocks/tensorflow.js
@@ -0,0 +1,230 @@
+import * as Blockly from 'blockly/core';
+
+const TENSORFLOW_HUE = '#1216ab';
+
+Blockly.Blocks.tensorflow_init_tensor = {
+ init: function () {
+ this.appendValueInput("VAR")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_INIT_TENSOR);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_sequential = {
+ init: function () {
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_SEQUENTIAL);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_layers_dense = {
+ init: function () {
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_INIT_LAYERS_DENSE_LAYER);
+ this.appendValueInput("VAR1")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_OUTPUT_DIMENSION);
+ this.appendValueInput("VAR2")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_INPUT_SHAPE);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_add = {
+ init: function () {
+ this.appendValueInput("VAR1")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL);
+ this.appendValueInput("VAR2")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_ADD_LAYER);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_compile = {
+ init: function () {
+ this.appendValueInput("VAR1")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_COMPILE_MODEL);
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_LOSS_FUNCTION_TYPE)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.MIXLY_TENSORFLOW_MEAN_SQUARED_ERROR, "meanSquaredError"]
+ ]), "VAR2");
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_OPTIMIZER)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.MIXLY_TENSORFLOW_SGD, "sgd"]
+ ]), "VAR3");
+ this.setInputsInline(true);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_fit = {
+ init: function () {
+ this.appendValueInput("VAR1")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_MODEL);
+ this.appendValueInput("VAR2")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_INPUT_DATA);
+ this.appendValueInput("VAR3")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_TARGET_DATA);
+ this.appendValueInput("VAR4")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_EPOCHS);
+ this.appendValueInput("VAR5")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_VERBOSE);
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_RETURN_HISTORY);
+ this.setInputsInline(false);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_get_loss = {
+ init: function () {
+ this.appendValueInput("VAR")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY);
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY_2);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_predict = {
+ init: function () {
+ this.appendValueInput("VAR1")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREDICT);
+ this.appendValueInput("VAR2")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREDICT_INPUT_DATA);
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREDICT_RETURN_RESULT);
+ this.setInputsInline(false);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_get_tensor_data = {
+ init: function () {
+ this.appendValueInput("VAR")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_GET_TENSOR_DATA);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_save_or_export_model = {
+ init: function () {
+ this.appendValueInput("NAME1")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL);
+ this.appendValueInput("NAME2")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.MIXLY_TENSORFLOW_SAVE_MODEL, "save"],
+ [Blockly.Msg.MIXLY_TENSORFLOW_EXPORT_MODEL, "export"]
+ ]), "NAME")
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_SAVE_MODEL_NAME);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_use_load_model = {
+ init: function () {
+ this.appendValueInput("NAME")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_LOAD_MODEL)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL_NAME);
+ this.setInputsInline(true);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
+
+Blockly.Blocks.tensorflow_prepare_picture = {
+ init: function () {
+ this.appendValueInput("NAME")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_LEFT)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREPARE_PICTURE_TO_TENSOR)
+ .appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREPARE_PICTURE_READ_PICTURE);
+ this.setInputsInline(true);
+ this.setOutput(true, null);
+ this.setColour(TENSORFLOW_HUE);
+ this.setTooltip('');
+ this.setHelpUrl('');
+ }
+};
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/export.js b/boards/default_src/python_pyodide/export.js
index 70d64194..ccf9bf50 100644
--- a/boards/default_src/python_pyodide/export.js
+++ b/boards/default_src/python_pyodide/export.js
@@ -1,7 +1,11 @@
import * as PythonPyodideSKLearnBlocks from './blocks/sklearn';
import * as PythonPyodideSKLearnGenerators from './generators/sklearn';
+import * as PythonTensorflowBlocks from './blocks/tensorflow';
+import * as PythonTensorflowGenerators from './generators/tensorflow';
export {
PythonPyodideSKLearnBlocks,
- PythonPyodideSKLearnGenerators
+ PythonPyodideSKLearnGenerators,
+ PythonTensorflowBlocks,
+ PythonTensorflowGenerators
};
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/generators/tensorflow.js b/boards/default_src/python_pyodide/generators/tensorflow.js
new file mode 100644
index 00000000..404c3b7f
--- /dev/null
+++ b/boards/default_src/python_pyodide/generators/tensorflow.js
@@ -0,0 +1,97 @@
+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];
+};
diff --git a/boards/default_src/python_pyodide/index.js b/boards/default_src/python_pyodide/index.js
index 85c308b0..72f9bfd4 100644
--- a/boards/default_src/python_pyodide/index.js
+++ b/boards/default_src/python_pyodide/index.js
@@ -69,7 +69,9 @@ import {
import {
PythonPyodideSKLearnBlocks,
- PythonPyodideSKLearnGenerators
+ PythonPyodideSKLearnGenerators,
+ PythonTensorflowBlocks,
+ PythonTensorflowGenerators
} from './';
import './others/loader';
@@ -113,7 +115,8 @@ Object.assign(
PythonMixpySKLearnBlocks,
PythonMixpySystemBlocks,
PythonMixpyTurtleBlocks,
- PythonPyodideSKLearnBlocks
+ PythonPyodideSKLearnBlocks,
+ PythonTensorflowBlocks
);
Object.assign(
@@ -146,5 +149,6 @@ Object.assign(
PythonMixpySKLearnGenerators,
PythonMixpySystemGenerators,
PythonMixpyTurtleGenerators,
- PythonPyodideSKLearnGenerators
+ PythonPyodideSKLearnGenerators,
+ PythonTensorflowGenerators
);
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/origin/deps/0.62.21/python3/modules/tensorflow-0.0.1-py3-none-any.whl b/boards/default_src/python_pyodide/origin/deps/0.62.21/python3/modules/tensorflow-0.0.1-py3-none-any.whl
new file mode 100644
index 00000000..d26e3fed
Binary files /dev/null and b/boards/default_src/python_pyodide/origin/deps/0.62.21/python3/modules/tensorflow-0.0.1-py3-none-any.whl differ
diff --git a/boards/default_src/python_pyodide/origin/deps/0.62.21/python3/repodata.json b/boards/default_src/python_pyodide/origin/deps/0.62.21/python3/repodata.json
index 001357ad..986b0714 100644
--- a/boards/default_src/python_pyodide/origin/deps/0.62.21/python3/repodata.json
+++ b/boards/default_src/python_pyodide/origin/deps/0.62.21/python3/repodata.json
@@ -3378,6 +3378,17 @@
"sprite"
],
"depends": []
+ },
+ "tensorflow": {
+ "name": "tensorflow",
+ "version": "0.0.1",
+ "file_name": "{basthonRoot}/modules/tensorflow-0.0.1-py3-none-any.whl",
+ "install_dir": "site",
+ "sha256": "734415520a240e19f44c6121f0e237300c9f82ce87635a9e40a6639d0f35c888",
+ "imports": [
+ "tensorflow"
+ ],
+ "depends": []
}
}
}
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/others/loader.js b/boards/default_src/python_pyodide/others/loader.js
index 5de725d1..1700189d 100644
--- a/boards/default_src/python_pyodide/others/loader.js
+++ b/boards/default_src/python_pyodide/others/loader.js
@@ -2,5 +2,328 @@ import NavExt from './nav-ext';
import * as tf from '@tensorflow/tfjs';
import './tensorflow';
+import * as Blockly from 'blockly/core';
NavExt.init();
-window.tf = tf;
\ No newline at end of file
+window.tf = tf;
+
+let featureExtractor;
+// featureExtractor = await tf.loadGraphModel("../common/media/tfmodel/model.json");
+// window.featureExtractor = featureExtractor;
+
+function closeModal() {
+ document.getElementById('modalOverlay').style.display = 'none';
+}
+
+// 从IndexedDB删除单个模型
+async function deleteModel(modelName) {
+ try {
+ await tf.io.removeModel(`indexeddb://${modelName}`);
+ // 从UI移除
+ const modelItem = document.querySelector(`.model-item[data-model-name="${modelName}"]`);
+ if (modelItem) modelItem.remove();
+ } catch (error) {
+ console.error('删除模型失败:', error);
+ alert('删除模型失败: ' + error.message);
+ }
+}
+
+// 显示单个模型项
+function displayModelItem(modelName) {
+ const modelsList = document.getElementById('imported-models');
+ if ([...modelsList.children].some(item => item.dataset.modelName === modelName)) {
+ return;
+ }
+ const modelItem = document.createElement('div');
+ modelItem.className = 'model-item';
+ modelItem.dataset.modelName = modelName;
+ modelItem.innerHTML = `
+
+ ${modelName}
+
+
+ `;
+
+ // 绑定删除事件
+ modelItem.querySelector('.delete-model').addEventListener('click', () => {
+ deleteModel(modelName);
+ });
+
+ modelsList.appendChild(modelItem);
+}
+
+// 清空所有模型
+async function clearAllModels() {
+ try {
+ const modelInfos = await tf.io.listModels();
+ const deletePromises = Object.keys(modelInfos)
+ .map(path => path.replace('indexeddb://', ''))
+ .map(modelName => tf.io.removeModel(`indexeddb://${modelName}`));
+
+ await Promise.all(deletePromises);
+ document.getElementById('imported-models').innerHTML = '';
+ } catch (error) {
+ console.error('清空模型失败:', error);
+ alert('清空模型失败: ' + error.message);
+ }
+}
+
+// 加载并显示所有模型
+async function loadAndDisplayAllModels() {
+ try {
+ const modelInfos = await tf.io.listModels();
+ document.getElementById('imported-models').innerHTML = '';
+ for (const [path] of Object.entries(modelInfos)) {
+ const modelName = path.replace('indexeddb://', '');
+ displayModelItem(modelName);
+ }
+ } catch (error) {
+ console.error('加载模型列表失败:', error);
+ }
+}
+
+async function createModal() {
+ const overlay = document.createElement('div');
+ overlay.id = 'modalOverlay';
+ Object.assign(overlay.style, {
+ display: 'none',
+ position: 'fixed',
+ top: '0',
+ left: '0',
+ width: '100%',
+ height: '100%',
+ backgroundColor: 'rgba(0,0,0,0.5)',
+ zIndex: '20011216',
+ pointerEvents: 'auto'
+ });
+ const content = document.createElement('div');
+ Object.assign(content.style, {
+ backgroundColor: 'white',
+ width: '60%',
+ maxHeight: '80%',
+ margin: '12vh auto',
+ padding: '20px 30px',
+ borderRadius: '12px'
+ });
+ content.innerHTML = `
+ 选择本地模型
+
+
+
+
+ 导入模型名称:
+
+
+
+
+
+
❌ 模型结构描述文件(model.json)
+
+
未选择
+
+
+
❌ 权重文件(model.weights.bin)
+
0 个已选择
+
+
+
+
+
+
+
+
+ `;
+ overlay.appendChild(content);
+ document.body.appendChild(overlay);
+
+ content.querySelector('.close-btn').addEventListener('click', closeModal);
+ overlay.addEventListener('click', (e) => {
+ if (e.target === overlay) closeModal();
+ });
+ // 获取DOM元素
+ const modelUpload = document.getElementById('model-upload');
+ const modelHandle = document.getElementById('model-handle');
+ const outputDiv = document.getElementById('output');
+
+ let jsonFile = null;
+ let weightFiles = [];
+
+ modelUpload.addEventListener('change', async (event) => {
+ const files = event.target.files;
+
+ // 获取状态元素
+ const jsonStatus = document.getElementById('json-status');
+ const weightsStatus = document.getElementById('weights-status');
+
+ // 重置状态显示(保持完整文件名描述)
+ jsonStatus.querySelector('span').textContent = '❌ 模型结构描述文件(model.json)';
+ jsonStatus.querySelector('div').textContent = '未选择';
+ weightsStatus.querySelector('span').textContent = '❌ 权重文件(model.weights.bin)';
+ weightsStatus.querySelector('div').textContent = '0 个已选择';
+
+ // 分离 JSON 和权重文件
+ weightFiles = [];
+ for (let i = 0; i < files.length; i++) {
+ if (files[i].name.endsWith('.json')) {
+ jsonFile = files[i];
+ } else {
+ weightFiles.push(files[i]);
+ }
+ }
+
+ if (!jsonFile) {
+ alert('未找到 model.json 文件');
+ return;
+ }
+
+ outputDiv.innerHTML = '正在处理上传的模型文件...';
+
+ if (jsonFile) {
+ jsonStatus.querySelector('span').textContent = '✅ 模型结构描述文件(model.json)';
+ jsonStatus.querySelector('div').textContent = '已选择';
+ const modelName = jsonFile.name.replace('.json', '');
+ document.getElementById('model-name').value = modelName;
+ }
+
+ if (weightFiles.length > 0) {
+ weightsStatus.querySelector('span').textContent = '✅ 权重文件(model.weights.bin)';
+ weightsStatus.querySelector('div').textContent = `${weightFiles.length} 个已选择`;
+ }
+ });
+
+ modelHandle.addEventListener('click', async () => {
+ try {
+ const modelNameInput = document.getElementById('model-name');
+ const modelName = modelNameInput.value || 'mixly-model';
+
+ const model = await tf.loadLayersModel(
+ tf.io.browserFiles([jsonFile, ...weightFiles])
+ );
+ await model.save(`indexeddb://${modelName}`);
+ loadAndDisplayAllModels();
+ outputDiv.innerHTML = `模型已成功保存为 ${modelName}!`;
+ } catch (error) {
+ outputDiv.innerHTML = `保存模型出错: ${error.message}`;
+ console.error(error);
+ }
+ })
+
+ content.querySelector('#refresh-models').addEventListener('click', loadAndDisplayAllModels);
+ content.querySelector('#clear-models').addEventListener('click', async () => {
+ if (confirm('确定要删除所有模型吗?此操作不可恢复!')) {
+ await clearAllModels();
+ }
+ });
+}
+
+createModal();
+
+await loadAndDisplayAllModels();
+
+function openModal() {
+ loadAndDisplayAllModels();
+ document.getElementById('modalOverlay').style.display = 'block';
+}
+
+const workspace = Blockly.getMainWorkspace();
+workspace.registerButtonCallback('handleModels', function () {
+ openModal();
+});
+
+
+async function prepare_qmyixtxi(imgTensor) {
+ let net = null;
+
+ if (window.featureExtractor) {
+ net = window.featureExtractor;
+ } else {
+ net = await tf.loadGraphModel("../common/media/tfmodel/model.json");
+ window.featureExtractor = net;
+ }
+ const preprocessedImg = imgTensor
+ .resizeBilinear([224, 224])
+ .toFloat()
+ .div(tf.scalar(127.5))
+ .sub(tf.scalar(1))
+ .expandDims(0);
+
+ const features = featureExtractor.predict(preprocessedImg);
+
+ let activation = features;
+ return activation;
+}
+window.prepare_qmyixtxi = prepare_qmyixtxi;
diff --git a/boards/default_src/python_pyodide/others/teachableMachine/App.vue b/boards/default_src/python_pyodide/others/teachableMachine/App.vue
index d5208002..2ae86a68 100644
--- a/boards/default_src/python_pyodide/others/teachableMachine/App.vue
+++ b/boards/default_src/python_pyodide/others/teachableMachine/App.vue
@@ -8,31 +8,6 @@ import teachableModel from './components/teachableModel.vue';
// import 'element-plus/theme-chalk/el-notification.css';
// import './styles/index.scss';
-
-const userInfo = reactive({
- is_Login: false,
- username: '',
- password: '',
-})
-
-const apiurl = ref('http://127.0.0.1:5174')
-provide('apiurl', apiurl.value)
-
-provide('userInfo', userInfo)
-onMounted(() => {
- // 获取当前的LS里的已经登录的信息
- if (
- localStorage.getItem('myAIplatformUsername')
- && localStorage.getItem('myAIplatformPassword')
- ) {
- userInfo.is_Login = true
- userInfo.username = localStorage.getItem('myAIplatformUsername')
- userInfo.password = localStorage.getItem('myAIplatformPassword')
- }
- else {
- userInfo.is_Login = false
- }
-})
diff --git a/boards/default_src/python_pyodide/others/teachableMachine/components/teachableModel/ModelArea.vue b/boards/default_src/python_pyodide/others/teachableMachine/components/teachableModel/ModelArea.vue
index 55f6d754..177b4256 100644
--- a/boards/default_src/python_pyodide/others/teachableMachine/components/teachableModel/ModelArea.vue
+++ b/boards/default_src/python_pyodide/others/teachableMachine/components/teachableModel/ModelArea.vue
@@ -1,11 +1,20 @@
-
-
-
-
- 训练过程可视化
-
- 隐藏
-
-
-
- 训练准备中……
-
-
+
+
+
+
+ 训练过程可视化
+ 隐藏
-
-
-
-
-
-
-
-
- 名称:
-
-
-
-
-
-
- 保存
-
-
-
-
- 输入
-
-
- 上方拍摄内容
-
-
- 切换为上传图片
-
-
-
-
- 下方上传图片
-
- 切换为上方拍摄内容
-
-
-
- 重新上传一张
-
-
-
![用户上传图片]()
-
-
-
- 输出
-
-
-
- {{ item.name }}
-
-
-
-
-
-
+
训练准备中……
+
+
+
+
+
+
+
+
+
+ 名称:
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+ 输入
+
+
+
+ 上方拍摄内容
+
+ 切换为上传图片
+
+
+
+ 下方上传图片
+
+ 切换为上方拍摄内容
+
+
+ 重新上传一张
+
+
![用户上传图片]()
+
+
+
+ 输出
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
diff --git a/boards/default_src/python_pyodide/template.xml b/boards/default_src/python_pyodide/template.xml
index 896c0083..0a66d75c 100644
--- a/boards/default_src/python_pyodide/template.xml
+++ b/boards/default_src/python_pyodide/template.xml
@@ -3724,6 +3724,128 @@
+
+
+
+
+
+ 1,2,3,4,5
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+
+
+ model
+
+
+
+
+ layer
+
+
+
+
+
+
+ model
+
+
+
+
+
+
+ model
+
+
+
+
+ xs
+
+
+
+
+ ys
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+ history
+
+
+
+
+
+
+ model
+
+
+
+
+ inputTensor
+
+
+
+
+
+
+ outputTensor
+
+
+
+
+
+
+ model
+
+
+
+
+ my-model
+
+
+
+
+
+
+ my-model
+
+
+
+
+
+
+ 1.jpg
+
+
+
+
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/__init__.py b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/__init__.py
new file mode 100644
index 00000000..b0b9dfd8
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/__init__.py
@@ -0,0 +1,44 @@
+from pyodide.ffi import to_js, create_proxy
+import js
+import json
+import os
+from . import layers
+
+
+def __cache_model(file_path):
+ data = json.load(open(file_path, 'r'))
+ f = open(file_path, 'rb')
+ js.tensorflow.setModelsValue(file_path, to_js(f.read()))
+ f.close()
+ folder_path = os.path.dirname(file_path)
+ for item in data['weightsManifest']:
+ for current_path in item['paths']:
+ bin_file_path = '{}/{}'.format(folder_path, current_path)
+ f = open(bin_file_path, 'rb')
+ js.tensorflow.setModelsValue(bin_file_path, to_js(f.read()))
+ f.close()
+
+
+async def load_graph_model(file_path):
+ __cache_model(file_path)
+ model = await js.tensorflow.loadGraphModel(file_path)
+ return model
+
+
+async def load_layers_model(file_path):
+ __cache_model(file_path)
+ model = await js.tensorflow.loadLayersModel(file_path)
+ return model
+
+def tensor(data):
+ return js.tf.tensor(to_js(data))
+
+def sequential():
+ return js.tf.sequential()
+
+async def load_model(name):
+ model = await js.tf.loadLayersModel(f"indexeddb://{name}")
+ return model
+
+async def prepare_qmyixtxi(imgTensor):
+ return await js.prepare_qmyixtxi(imgTensor)
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/__init__.py b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/__init__.py
new file mode 100644
index 00000000..2521bbb4
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/__init__.py
@@ -0,0 +1,5 @@
+from .activation import *
+from .core import *
+
+from pyodide.ffi import to_js, create_proxy
+import js
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/activation.py b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/activation.py
new file mode 100644
index 00000000..8e269fab
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/activation.py
@@ -0,0 +1,37 @@
+import js
+
+
+def elu(*args, **kwargs):
+ '''
+ f(x) = alpha * (exp(x) - 1.) for x < 0, f(x) = x for x >= 0.
+ '''
+ js.tensorflow.layers.elu(*args, **kwargs)
+
+
+def leaky_relu(*args, **kwargs):
+ '''
+ f(x) = alpha * x for x < 0. f(x) = x for x >= 0.
+ '''
+ js.tensorflow.layers.leakyReLU(*args, **kwargs)
+
+
+def prelu(*args, **kwargs):
+ '''
+ f(x) = alpha * x for x < 0. f(x) = x for x >= 0.
+ '''
+ js.tensorflow.layers.prelu(*args, **kwargs)
+
+
+def relu(*args, **kwargs):
+ js.tensorflow.layers.relu(*args, **kwargs)
+
+
+def softmax(*args, **kwargs):
+ js.tensorflow.layers.softmax(*args, **kwargs)
+
+
+def thresholded_relu(*args, **kwargs):
+ '''
+ f(x) = x for x > theta, f(x) = 0 otherwise.
+ '''
+ js.tensorflow.layers.thresholdedReLU(*args, **kwargs)
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/base.py b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/base.py
new file mode 100644
index 00000000..e69de29b
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/core.py b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/core.py
new file mode 100644
index 00000000..0fe4d233
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/build/lib/tensorflow/layers/core.py
@@ -0,0 +1,5 @@
+import js
+from pyodide.ffi import to_js
+
+def dense(units, input_shape=None):
+ return js.tf.layers.dense(units=units, inputShape=to_js(input_shape))
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/dist/tensorflow-0.0.1-py3-none-any.whl b/boards/default_src/python_pyodide/whl/tensorflow-project/dist/tensorflow-0.0.1-py3-none-any.whl
new file mode 100644
index 00000000..d26e3fed
Binary files /dev/null and b/boards/default_src/python_pyodide/whl/tensorflow-project/dist/tensorflow-0.0.1-py3-none-any.whl differ
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/PKG-INFO b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/PKG-INFO
new file mode 100644
index 00000000..351f37ba
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/PKG-INFO
@@ -0,0 +1,10 @@
+Metadata-Version: 2.4
+Name: tensorflow
+Version: 0.0.1
+Summary: 适用于pyodide的tensorflowjs包
+Author: Mixly Team
+Author-email:
+Classifier: Programming Language :: Python :: 3
+Dynamic: author
+Dynamic: classifier
+Dynamic: summary
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/SOURCES.txt b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/SOURCES.txt
new file mode 100644
index 00000000..0636b93b
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/SOURCES.txt
@@ -0,0 +1,10 @@
+setup.py
+tensorflow/__init__.py
+tensorflow.egg-info/PKG-INFO
+tensorflow.egg-info/SOURCES.txt
+tensorflow.egg-info/dependency_links.txt
+tensorflow.egg-info/top_level.txt
+tensorflow/layers/__init__.py
+tensorflow/layers/activation.py
+tensorflow/layers/base.py
+tensorflow/layers/core.py
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/dependency_links.txt b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/dependency_links.txt
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/top_level.txt b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/top_level.txt
new file mode 100644
index 00000000..0f571440
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow.egg-info/top_level.txt
@@ -0,0 +1 @@
+tensorflow
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/__init__.py b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/__init__.py
index 67a51113..b0b9dfd8 100644
--- a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/__init__.py
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/__init__.py
@@ -2,6 +2,7 @@ from pyodide.ffi import to_js, create_proxy
import js
import json
import os
+from . import layers
def __cache_model(file_path):
@@ -28,3 +29,16 @@ async def load_layers_model(file_path):
__cache_model(file_path)
model = await js.tensorflow.loadLayersModel(file_path)
return model
+
+def tensor(data):
+ return js.tf.tensor(to_js(data))
+
+def sequential():
+ return js.tf.sequential()
+
+async def load_model(name):
+ model = await js.tf.loadLayersModel(f"indexeddb://{name}")
+ return model
+
+async def prepare_qmyixtxi(imgTensor):
+ return await js.prepare_qmyixtxi(imgTensor)
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/layers/__init__.py b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/layers/__init__.py
index c8a4dfc4..2521bbb4 100644
--- a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/layers/__init__.py
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/layers/__init__.py
@@ -1 +1,5 @@
-from activation import *
+from .activation import *
+from .core import *
+
+from pyodide.ffi import to_js, create_proxy
+import js
\ No newline at end of file
diff --git a/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/layers/core.py b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/layers/core.py
new file mode 100644
index 00000000..0fe4d233
--- /dev/null
+++ b/boards/default_src/python_pyodide/whl/tensorflow-project/tensorflow/layers/core.py
@@ -0,0 +1,5 @@
+import js
+from pyodide.ffi import to_js
+
+def dense(units, input_shape=None):
+ return js.tf.layers.dense(units=units, inputShape=to_js(input_shape))
\ No newline at end of file
diff --git a/common/media/tfmodel/group1-shard1of3.bin b/common/media/tfmodel/group1-shard1of3.bin
new file mode 100644
index 00000000..1ec46e46
Binary files /dev/null and b/common/media/tfmodel/group1-shard1of3.bin differ
diff --git a/common/media/tfmodel/group1-shard2of3.bin b/common/media/tfmodel/group1-shard2of3.bin
new file mode 100644
index 00000000..8e4e48d2
Binary files /dev/null and b/common/media/tfmodel/group1-shard2of3.bin differ
diff --git a/common/media/tfmodel/group1-shard3of3.bin b/common/media/tfmodel/group1-shard3of3.bin
new file mode 100644
index 00000000..ee27b467
Binary files /dev/null and b/common/media/tfmodel/group1-shard3of3.bin differ
diff --git a/common/media/tfmodel/model.json b/common/media/tfmodel/model.json
new file mode 100644
index 00000000..d4edc2cb
--- /dev/null
+++ b/common/media/tfmodel/model.json
@@ -0,0 +1 @@
+{"weightsManifest": [{"paths": ["group1-shard1of3.bin", "group1-shard2of3.bin", "group1-shard3of3.bin"], "weights": [{"dtype": "float32", "shape": [], "name": "module_apply_default/hub_input/Mul/y"}, {"dtype": "float32", "shape": [], "name": "module_apply_default/hub_input/Sub/y"}, {"dtype": "float32", "shape": [3, 3, 3, 32], "name": "module/MobilenetV2/Conv/weights"}, {"dtype": "float32", "shape": [32], "name": "module_apply_default/MobilenetV2/Conv/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 32, 1], "name": "module/MobilenetV2/expanded_conv/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [32], "name": "module_apply_default/MobilenetV2/expanded_conv/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 32, 16], "name": "module/MobilenetV2/expanded_conv/project/weights"}, {"dtype": "float32", "shape": [16], "name": "module_apply_default/MobilenetV2/expanded_conv/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 16, 96], "name": "module/MobilenetV2/expanded_conv_1/expand/weights"}, {"dtype": "float32", "shape": [96], "name": "module_apply_default/MobilenetV2/expanded_conv_1/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 96, 1], "name": "module/MobilenetV2/expanded_conv_1/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [96], "name": "module_apply_default/MobilenetV2/expanded_conv_1/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 96, 24], "name": "module/MobilenetV2/expanded_conv_1/project/weights"}, {"dtype": "float32", "shape": [24], "name": "module_apply_default/MobilenetV2/expanded_conv_1/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 24, 144], "name": "module/MobilenetV2/expanded_conv_2/expand/weights"}, {"dtype": "float32", "shape": [144], "name": "module_apply_default/MobilenetV2/expanded_conv_2/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 144, 1], "name": "module/MobilenetV2/expanded_conv_2/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [144], "name": "module_apply_default/MobilenetV2/expanded_conv_2/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 144, 24], "name": "module/MobilenetV2/expanded_conv_2/project/weights"}, {"dtype": "float32", "shape": [24], "name": "module_apply_default/MobilenetV2/expanded_conv_2/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 24, 144], "name": "module/MobilenetV2/expanded_conv_3/expand/weights"}, {"dtype": "float32", "shape": [144], "name": "module_apply_default/MobilenetV2/expanded_conv_3/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 144, 1], "name": "module/MobilenetV2/expanded_conv_3/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [144], "name": "module_apply_default/MobilenetV2/expanded_conv_3/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 144, 32], "name": "module/MobilenetV2/expanded_conv_3/project/weights"}, {"dtype": "float32", "shape": [32], "name": "module_apply_default/MobilenetV2/expanded_conv_3/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 32, 192], "name": "module/MobilenetV2/expanded_conv_4/expand/weights"}, {"dtype": "float32", "shape": [192], "name": "module_apply_default/MobilenetV2/expanded_conv_4/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 192, 1], "name": "module/MobilenetV2/expanded_conv_4/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [192], "name": "module_apply_default/MobilenetV2/expanded_conv_4/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 192, 32], "name": "module/MobilenetV2/expanded_conv_4/project/weights"}, {"dtype": "float32", "shape": [32], "name": "module_apply_default/MobilenetV2/expanded_conv_4/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 32, 192], "name": "module/MobilenetV2/expanded_conv_5/expand/weights"}, {"dtype": "float32", "shape": [192], "name": "module_apply_default/MobilenetV2/expanded_conv_5/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 192, 1], "name": "module/MobilenetV2/expanded_conv_5/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [192], "name": "module_apply_default/MobilenetV2/expanded_conv_5/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 192, 32], "name": "module/MobilenetV2/expanded_conv_5/project/weights"}, {"dtype": "float32", "shape": [32], "name": "module_apply_default/MobilenetV2/expanded_conv_5/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 32, 192], "name": "module/MobilenetV2/expanded_conv_6/expand/weights"}, {"dtype": "float32", "shape": [192], "name": "module_apply_default/MobilenetV2/expanded_conv_6/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 192, 1], "name": "module/MobilenetV2/expanded_conv_6/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [192], "name": "module_apply_default/MobilenetV2/expanded_conv_6/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 192, 64], "name": "module/MobilenetV2/expanded_conv_6/project/weights"}, {"dtype": "float32", "shape": [64], "name": "module_apply_default/MobilenetV2/expanded_conv_6/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 64, 384], "name": "module/MobilenetV2/expanded_conv_7/expand/weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_7/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 384, 1], "name": "module/MobilenetV2/expanded_conv_7/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_7/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 384, 64], "name": "module/MobilenetV2/expanded_conv_7/project/weights"}, {"dtype": "float32", "shape": [64], "name": "module_apply_default/MobilenetV2/expanded_conv_7/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 64, 384], "name": "module/MobilenetV2/expanded_conv_8/expand/weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_8/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 384, 1], "name": "module/MobilenetV2/expanded_conv_8/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_8/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 384, 64], "name": "module/MobilenetV2/expanded_conv_8/project/weights"}, {"dtype": "float32", "shape": [64], "name": "module_apply_default/MobilenetV2/expanded_conv_8/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 64, 384], "name": "module/MobilenetV2/expanded_conv_9/expand/weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_9/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 384, 1], "name": "module/MobilenetV2/expanded_conv_9/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_9/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 384, 64], "name": "module/MobilenetV2/expanded_conv_9/project/weights"}, {"dtype": "float32", "shape": [64], "name": "module_apply_default/MobilenetV2/expanded_conv_9/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 64, 384], "name": "module/MobilenetV2/expanded_conv_10/expand/weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_10/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 384, 1], "name": "module/MobilenetV2/expanded_conv_10/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [384], "name": "module_apply_default/MobilenetV2/expanded_conv_10/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 384, 96], "name": "module/MobilenetV2/expanded_conv_10/project/weights"}, {"dtype": "float32", "shape": [96], "name": "module_apply_default/MobilenetV2/expanded_conv_10/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 96, 576], "name": "module/MobilenetV2/expanded_conv_11/expand/weights"}, {"dtype": "float32", "shape": [576], "name": "module_apply_default/MobilenetV2/expanded_conv_11/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 576, 1], "name": "module/MobilenetV2/expanded_conv_11/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [576], "name": "module_apply_default/MobilenetV2/expanded_conv_11/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 576, 96], "name": "module/MobilenetV2/expanded_conv_11/project/weights"}, {"dtype": "float32", "shape": [96], "name": "module_apply_default/MobilenetV2/expanded_conv_11/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 96, 576], "name": "module/MobilenetV2/expanded_conv_12/expand/weights"}, {"dtype": "float32", "shape": [576], "name": "module_apply_default/MobilenetV2/expanded_conv_12/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 576, 1], "name": "module/MobilenetV2/expanded_conv_12/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [576], "name": "module_apply_default/MobilenetV2/expanded_conv_12/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 576, 96], "name": "module/MobilenetV2/expanded_conv_12/project/weights"}, {"dtype": "float32", "shape": [96], "name": "module_apply_default/MobilenetV2/expanded_conv_12/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 96, 576], "name": "module/MobilenetV2/expanded_conv_13/expand/weights"}, {"dtype": "float32", "shape": [576], "name": "module_apply_default/MobilenetV2/expanded_conv_13/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 576, 1], "name": "module/MobilenetV2/expanded_conv_13/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [576], "name": "module_apply_default/MobilenetV2/expanded_conv_13/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 576, 160], "name": "module/MobilenetV2/expanded_conv_13/project/weights"}, {"dtype": "float32", "shape": [160], "name": "module_apply_default/MobilenetV2/expanded_conv_13/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 160, 960], "name": "module/MobilenetV2/expanded_conv_14/expand/weights"}, {"dtype": "float32", "shape": [960], "name": "module_apply_default/MobilenetV2/expanded_conv_14/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 960, 1], "name": "module/MobilenetV2/expanded_conv_14/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [960], "name": "module_apply_default/MobilenetV2/expanded_conv_14/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 960, 160], "name": "module/MobilenetV2/expanded_conv_14/project/weights"}, {"dtype": "float32", "shape": [160], "name": "module_apply_default/MobilenetV2/expanded_conv_14/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 160, 960], "name": "module/MobilenetV2/expanded_conv_15/expand/weights"}, {"dtype": "float32", "shape": [960], "name": "module_apply_default/MobilenetV2/expanded_conv_15/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 960, 1], "name": "module/MobilenetV2/expanded_conv_15/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [960], "name": "module_apply_default/MobilenetV2/expanded_conv_15/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 960, 160], "name": "module/MobilenetV2/expanded_conv_15/project/weights"}, {"dtype": "float32", "shape": [160], "name": "module_apply_default/MobilenetV2/expanded_conv_15/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 160, 960], "name": "module/MobilenetV2/expanded_conv_16/expand/weights"}, {"dtype": "float32", "shape": [960], "name": "module_apply_default/MobilenetV2/expanded_conv_16/expand/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [3, 3, 960, 1], "name": "module/MobilenetV2/expanded_conv_16/depthwise/depthwise_weights"}, {"dtype": "float32", "shape": [960], "name": "module_apply_default/MobilenetV2/expanded_conv_16/depthwise/depthwise_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 960, 320], "name": "module/MobilenetV2/expanded_conv_16/project/weights"}, {"dtype": "float32", "shape": [320], "name": "module_apply_default/MobilenetV2/expanded_conv_16/project/Conv2D_bn_offset"}, {"dtype": "float32", "shape": [1, 1, 320, 1280], "name": "module/MobilenetV2/Conv_1/weights"}, {"dtype": "float32", "shape": [1280], "name": "module_apply_default/MobilenetV2/Conv_1/Conv2D_bn_offset"}]}], "modelTopology": {"node": [{"attr": {"dtype": {"type": "DT_FLOAT"}, "shape": {"shape": {"dim": [{"size": "-1"}, {"size": "224"}, {"size": "224"}, {"size": "3"}]}}}, "name": "images", "op": "Placeholder"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {}}}}, "name": "module_apply_default/hub_input/Mul/y", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {}}}}, "name": "module_apply_default/hub_input/Sub/y", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "3"}, {"size": "32"}]}}}}, "name": "module/MobilenetV2/Conv/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "32"}]}}}}, "name": "module_apply_default/MobilenetV2/Conv/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "32"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "32"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "32"}, {"size": "16"}]}}}}, "name": "module/MobilenetV2/expanded_conv/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "16"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "16"}, {"size": "96"}]}}}}, "name": "module/MobilenetV2/expanded_conv_1/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "96"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "96"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_1/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "96"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "96"}, {"size": "24"}]}}}}, "name": "module/MobilenetV2/expanded_conv_1/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "24"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "24"}, {"size": "144"}]}}}}, "name": "module/MobilenetV2/expanded_conv_2/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "144"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "144"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_2/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "144"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "144"}, {"size": "24"}]}}}}, "name": "module/MobilenetV2/expanded_conv_2/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "24"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "24"}, {"size": "144"}]}}}}, "name": "module/MobilenetV2/expanded_conv_3/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "144"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "144"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_3/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "144"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "144"}, {"size": "32"}]}}}}, "name": "module/MobilenetV2/expanded_conv_3/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "32"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "32"}, {"size": "192"}]}}}}, "name": "module/MobilenetV2/expanded_conv_4/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "192"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "192"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_4/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "192"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "192"}, {"size": "32"}]}}}}, "name": "module/MobilenetV2/expanded_conv_4/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "32"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "32"}, {"size": "192"}]}}}}, "name": "module/MobilenetV2/expanded_conv_5/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "192"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "192"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_5/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "192"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "192"}, {"size": "32"}]}}}}, "name": "module/MobilenetV2/expanded_conv_5/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "32"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "32"}, {"size": "192"}]}}}}, "name": "module/MobilenetV2/expanded_conv_6/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "192"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "192"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_6/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "192"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "192"}, {"size": "64"}]}}}}, "name": "module/MobilenetV2/expanded_conv_6/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "64"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "64"}, {"size": "384"}]}}}}, "name": "module/MobilenetV2/expanded_conv_7/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "384"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_7/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "384"}, {"size": "64"}]}}}}, "name": "module/MobilenetV2/expanded_conv_7/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "64"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "64"}, {"size": "384"}]}}}}, "name": "module/MobilenetV2/expanded_conv_8/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "384"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_8/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "384"}, {"size": "64"}]}}}}, "name": "module/MobilenetV2/expanded_conv_8/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "64"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "64"}, {"size": "384"}]}}}}, "name": "module/MobilenetV2/expanded_conv_9/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "384"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_9/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "384"}, {"size": "64"}]}}}}, "name": "module/MobilenetV2/expanded_conv_9/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "64"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "64"}, {"size": "384"}]}}}}, "name": "module/MobilenetV2/expanded_conv_10/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "384"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_10/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "384"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "384"}, {"size": "96"}]}}}}, "name": "module/MobilenetV2/expanded_conv_10/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "96"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "96"}, {"size": "576"}]}}}}, "name": "module/MobilenetV2/expanded_conv_11/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "576"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "576"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_11/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "576"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "576"}, {"size": "96"}]}}}}, "name": "module/MobilenetV2/expanded_conv_11/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "96"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "96"}, {"size": "576"}]}}}}, "name": "module/MobilenetV2/expanded_conv_12/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "576"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "576"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_12/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "576"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "576"}, {"size": "96"}]}}}}, "name": "module/MobilenetV2/expanded_conv_12/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "96"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "96"}, {"size": "576"}]}}}}, "name": "module/MobilenetV2/expanded_conv_13/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "576"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "576"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_13/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "576"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "576"}, {"size": "160"}]}}}}, "name": "module/MobilenetV2/expanded_conv_13/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "160"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "160"}, {"size": "960"}]}}}}, "name": "module/MobilenetV2/expanded_conv_14/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "960"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "960"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_14/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "960"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "960"}, {"size": "160"}]}}}}, "name": "module/MobilenetV2/expanded_conv_14/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "160"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "160"}, {"size": "960"}]}}}}, "name": "module/MobilenetV2/expanded_conv_15/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "960"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "960"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_15/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "960"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "960"}, {"size": "160"}]}}}}, "name": "module/MobilenetV2/expanded_conv_15/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "160"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "160"}, {"size": "960"}]}}}}, "name": "module/MobilenetV2/expanded_conv_16/expand/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "960"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/expand/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "3"}, {"size": "3"}, {"size": "960"}, {"size": "1"}]}}}}, "name": "module/MobilenetV2/expanded_conv_16/depthwise/depthwise_weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "960"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/depthwise/depthwise_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "960"}, {"size": "320"}]}}}}, "name": "module/MobilenetV2/expanded_conv_16/project/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "320"}]}}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/project/Conv2D_bn_offset", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1"}, {"size": "1"}, {"size": "320"}, {"size": "1280"}]}}}}, "name": "module/MobilenetV2/Conv_1/weights", "op": "Const"}, {"attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "1280"}]}}}}, "name": "module_apply_default/MobilenetV2/Conv_1/Conv2D_bn_offset", "op": "Const"}, {"input": ["images", "module_apply_default/hub_input/Mul/y"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/hub_input/Mul", "op": "Mul"}, {"input": ["module_apply_default/hub_input/Mul", "module_apply_default/hub_input/Sub/y"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/hub_input/Sub", "op": "Sub"}, {"device": "/device:CPU:0", "input": ["module_apply_default/hub_input/Sub", "module/MobilenetV2/Conv/weights", "module_apply_default/MobilenetV2/Conv/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "2", "2", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/Conv/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/Conv/Relu6", "module/MobilenetV2/expanded_conv/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "padding": {"s": "U0FNRQ=="}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv/depthwise/depthwise_bn_offset"], "attr": {"data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv/depthwise/Relu6", "module/MobilenetV2/expanded_conv/project/weights", "module_apply_default/MobilenetV2/expanded_conv/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv/project/BatchNorm/FusedBatchNorm", "module/MobilenetV2/expanded_conv_1/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_1/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_1/expand/Relu6", "module/MobilenetV2/expanded_conv_1/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "strides": {"list": {"i": ["1", "2", "2", "1"]}}, "padding": {"s": "U0FNRQ=="}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_1/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_1/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_1/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_1/depthwise/Relu6", "module/MobilenetV2/expanded_conv_1/project/weights", "module_apply_default/MobilenetV2/expanded_conv_1/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_1/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_1/project/BatchNorm/FusedBatchNorm", "module/MobilenetV2/expanded_conv_2/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_2/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_2/expand/Relu6", "module/MobilenetV2/expanded_conv_2/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_2/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_2/depthwise/depthwise_bn_offset"], "attr": {"data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_2/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_2/depthwise/Relu6", "module/MobilenetV2/expanded_conv_2/project/weights", "module_apply_default/MobilenetV2/expanded_conv_2/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_1/project/BatchNorm/FusedBatchNorm", "module_apply_default/MobilenetV2/expanded_conv_2/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_2/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_2/add", "module/MobilenetV2/expanded_conv_3/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_3/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_3/expand/Relu6", "module/MobilenetV2/expanded_conv_3/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "2", "2", "1"]}}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_3/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_3/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_3/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_3/depthwise/Relu6", "module/MobilenetV2/expanded_conv_3/project/weights", "module_apply_default/MobilenetV2/expanded_conv_3/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_3/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_3/project/BatchNorm/FusedBatchNorm", "module/MobilenetV2/expanded_conv_4/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_4/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_4/expand/Relu6", "module/MobilenetV2/expanded_conv_4/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_4/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_4/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_4/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_4/depthwise/Relu6", "module/MobilenetV2/expanded_conv_4/project/weights", "module_apply_default/MobilenetV2/expanded_conv_4/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_3/project/BatchNorm/FusedBatchNorm", "module_apply_default/MobilenetV2/expanded_conv_4/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_4/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_4/add", "module/MobilenetV2/expanded_conv_5/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_5/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_5/expand/Relu6", "module/MobilenetV2/expanded_conv_5/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "padding": {"s": "U0FNRQ=="}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_5/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_5/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_5/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_5/depthwise/Relu6", "module/MobilenetV2/expanded_conv_5/project/weights", "module_apply_default/MobilenetV2/expanded_conv_5/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_4/add", "module_apply_default/MobilenetV2/expanded_conv_5/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_5/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_5/add", "module/MobilenetV2/expanded_conv_6/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_6/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_6/expand/Relu6", "module/MobilenetV2/expanded_conv_6/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}, "strides": {"list": {"i": ["1", "2", "2", "1"]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_6/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_6/depthwise/depthwise_bn_offset"], "attr": {"data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_6/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_6/depthwise/Relu6", "module/MobilenetV2/expanded_conv_6/project/weights", "module_apply_default/MobilenetV2/expanded_conv_6/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_6/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_6/project/BatchNorm/FusedBatchNorm", "module/MobilenetV2/expanded_conv_7/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_7/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_7/expand/Relu6", "module/MobilenetV2/expanded_conv_7/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_7/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_7/depthwise/depthwise_bn_offset"], "attr": {"data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_7/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_7/depthwise/Relu6", "module/MobilenetV2/expanded_conv_7/project/weights", "module_apply_default/MobilenetV2/expanded_conv_7/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_6/project/BatchNorm/FusedBatchNorm", "module_apply_default/MobilenetV2/expanded_conv_7/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_7/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_7/add", "module/MobilenetV2/expanded_conv_8/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_8/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_8/expand/Relu6", "module/MobilenetV2/expanded_conv_8/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_8/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_8/depthwise/depthwise_bn_offset"], "attr": {"data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_8/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_8/depthwise/Relu6", "module/MobilenetV2/expanded_conv_8/project/weights", "module_apply_default/MobilenetV2/expanded_conv_8/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_7/add", "module_apply_default/MobilenetV2/expanded_conv_8/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_8/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_8/add", "module/MobilenetV2/expanded_conv_9/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_9/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_9/expand/Relu6", "module/MobilenetV2/expanded_conv_9/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_9/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_9/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_9/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_9/depthwise/Relu6", "module/MobilenetV2/expanded_conv_9/project/weights", "module_apply_default/MobilenetV2/expanded_conv_9/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_8/add", "module_apply_default/MobilenetV2/expanded_conv_9/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_9/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_9/add", "module/MobilenetV2/expanded_conv_10/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_10/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_10/expand/Relu6", "module/MobilenetV2/expanded_conv_10/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_10/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_10/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_10/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_10/depthwise/Relu6", "module/MobilenetV2/expanded_conv_10/project/weights", "module_apply_default/MobilenetV2/expanded_conv_10/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_10/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_10/project/BatchNorm/FusedBatchNorm", "module/MobilenetV2/expanded_conv_11/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_11/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_11/expand/Relu6", "module/MobilenetV2/expanded_conv_11/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "padding": {"s": "U0FNRQ=="}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_11/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_11/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_11/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_11/depthwise/Relu6", "module/MobilenetV2/expanded_conv_11/project/weights", "module_apply_default/MobilenetV2/expanded_conv_11/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_10/project/BatchNorm/FusedBatchNorm", "module_apply_default/MobilenetV2/expanded_conv_11/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_11/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_11/add", "module/MobilenetV2/expanded_conv_12/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_12/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_12/expand/Relu6", "module/MobilenetV2/expanded_conv_12/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_12/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_12/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_12/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_12/depthwise/Relu6", "module/MobilenetV2/expanded_conv_12/project/weights", "module_apply_default/MobilenetV2/expanded_conv_12/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_11/add", "module_apply_default/MobilenetV2/expanded_conv_12/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_12/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_12/add", "module/MobilenetV2/expanded_conv_13/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_13/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_13/expand/Relu6", "module/MobilenetV2/expanded_conv_13/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "strides": {"list": {"i": ["1", "2", "2", "1"]}}, "padding": {"s": "U0FNRQ=="}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_13/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_13/depthwise/depthwise_bn_offset"], "attr": {"data_format": {"s": "TkhXQw=="}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_13/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_13/depthwise/Relu6", "module/MobilenetV2/expanded_conv_13/project/weights", "module_apply_default/MobilenetV2/expanded_conv_13/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_13/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_13/project/BatchNorm/FusedBatchNorm", "module/MobilenetV2/expanded_conv_14/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_14/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_14/expand/Relu6", "module/MobilenetV2/expanded_conv_14/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_14/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_14/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_14/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_14/depthwise/Relu6", "module/MobilenetV2/expanded_conv_14/project/weights", "module_apply_default/MobilenetV2/expanded_conv_14/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_13/project/BatchNorm/FusedBatchNorm", "module_apply_default/MobilenetV2/expanded_conv_14/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_14/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_14/add", "module/MobilenetV2/expanded_conv_15/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_15/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_15/expand/Relu6", "module/MobilenetV2/expanded_conv_15/depthwise/depthwise_weights"], "attr": {"dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_15/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_15/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_15/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_15/depthwise/Relu6", "module/MobilenetV2/expanded_conv_15/project/weights", "module_apply_default/MobilenetV2/expanded_conv_15/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_14/add", "module_apply_default/MobilenetV2/expanded_conv_15/project/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_15/add", "op": "Add"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_15/add", "module/MobilenetV2/expanded_conv_16/expand/weights", "module_apply_default/MobilenetV2/expanded_conv_16/expand/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/expand/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_16/expand/Relu6", "module/MobilenetV2/expanded_conv_16/depthwise/depthwise_weights"], "attr": {"padding": {"s": "U0FNRQ=="}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/depthwise/depthwise", "op": "DepthwiseConv2dNative"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_16/depthwise/depthwise", "module_apply_default/MobilenetV2/expanded_conv_16/depthwise/depthwise_bn_offset"], "attr": {"T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/depthwise/BatchNorm/FusedBatchNorm", "op": "BiasAdd"}, {"input": ["module_apply_default/MobilenetV2/expanded_conv_16/depthwise/BatchNorm/FusedBatchNorm"], "attr": {"T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/depthwise/Relu6", "op": "Relu6"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_16/depthwise/Relu6", "module/MobilenetV2/expanded_conv_16/project/weights", "module_apply_default/MobilenetV2/expanded_conv_16/project/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}}, "name": "module_apply_default/MobilenetV2/expanded_conv_16/project/BatchNorm/FusedBatchNorm", "op": "_FusedConv2D"}, {"device": "/device:CPU:0", "input": ["module_apply_default/MobilenetV2/expanded_conv_16/project/BatchNorm/FusedBatchNorm", "module/MobilenetV2/Conv_1/weights", "module_apply_default/MobilenetV2/Conv_1/Conv2D_bn_offset"], "attr": {"explicit_paddings": {"list": {}}, "epsilon": {"f": 0.0}, "data_format": {"s": "TkhXQw=="}, "use_cudnn_on_gpu": {"b": true}, "padding": {"s": "U0FNRQ=="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "num_args": {"i": "1"}, "T": {"type": "DT_FLOAT"}, "dilations": {"list": {"i": ["1", "1", "1", "1"]}}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdTY="]}}}, "name": "module_apply_default/MobilenetV2/Conv_1/Relu6", "op": "_FusedConv2D"}, {"input": ["module_apply_default/MobilenetV2/Conv_1/Relu6"], "attr": {"padding": {"s": "VkFMSUQ="}, "strides": {"list": {"i": ["1", "1", "1", "1"]}}, "ksize": {"list": {"i": ["1", "7", "7", "1"]}}, "T": {"type": "DT_FLOAT"}, "data_format": {"s": "TkhXQw=="}}, "name": "module_apply_default/MobilenetV2/Logits/AvgPool", "op": "AvgPool"}, {"input": ["module_apply_default/MobilenetV2/Logits/AvgPool"], "attr": {"squeeze_dims": {"list": {"i": ["1", "2"]}}, "T": {"type": "DT_FLOAT"}}, "name": "module_apply_default/hub_output/feature_vector/SpatialSqueeze", "op": "Squeeze"}], "library": {}, "versions": {}}, "generatedBy": "1.14.0", "convertedBy": "TensorFlow.js Converter v1.2.10.1", "format": "graph-model"}
\ No newline at end of file
diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js
index 0bbfa84c..c0f10e2f 100644
--- a/common/msg/blockly/en.js
+++ b/common/msg/blockly/en.js
@@ -4009,4 +4009,36 @@ En.MIXLY_TINY_WEB_DB_START_NUMBER = 'Start number';
En.MIXLY_TINY_WEB_DB_VARIABLE_NUMBER = 'Number of variables';
En.MIXLY_TINY_WEB_DB_SEARCH_VARS = 'Characters in variable names';
+
+En.MIXLY_TENSORFLOW_INIT_TENSOR = 'Initialize tensor as';
+En.MIXLY_TENSORFLOW_SEQUENTIAL = 'Initialize sequential model';
+En.MIXLY_TENSORFLOW_INIT_LAYERS_DENSE_LAYER = 'Build dense layer';
+En.MIXLY_TENSORFLOW_OUTPUT_DIMENSION = 'Output dimension';
+En.MIXLY_TENSORFLOW_INPUT_SHAPE = 'Input shape';
+En.MIXLY_TENSORFLOW_MODEL = 'Model';
+En.MIXLY_TENSORFLOW_ADD_LAYER = 'Add layer';
+En.MIXLY_TENSORFLOW_COMPILE_MODEL = 'Compile model';
+En.MIXLY_TENSORFLOW_LOSS_FUNCTION_TYPE = 'Loss function type';
+En.MIXLY_TENSORFLOW_MEAN_SQUARED_ERROR = 'Mean squared error';
+En.MIXLY_TENSORFLOW_OPTIMIZER = 'Optimizer';
+En.MIXLY_TENSORFLOW_SGD = 'Stochastic gradient descent';
+En.MIXLY_TENSORFLOW_FIT_MODEL = 'Train model';
+En.MIXLY_TENSORFLOW_FIT_INPUT_DATA = 'Input data';
+En.MIXLY_TENSORFLOW_FIT_TARGET_DATA = 'Target data';
+En.MIXLY_TENSORFLOW_FIT_EPOCHS = 'Training epochs';
+En.MIXLY_TENSORFLOW_FIT_VERBOSE = 'Verbose level';
+En.MIXLY_TENSORFLOW_FIT_RETURN_HISTORY = 'Return training history object';
+En.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY = 'From training history object';
+En.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY_2 = 'Get training loss values array';
+En.MIXLY_TENSORFLOW_PREDICT = 'Use model for prediction';
+En.MIXLY_TENSORFLOW_PREDICT_INPUT_DATA = 'Input data';
+En.MIXLY_TENSORFLOW_PREDICT_RETURN_RESULT = 'Return prediction result tensor';
+En.MIXLY_TENSORFLOW_GET_TENSOR_DATA = 'Get data from tensor';
+En.MIXLY_TENSORFLOW_SAVE_MODEL = 'Save model';
+En.MIXLY_TENSORFLOW_EXPORT_MODEL = 'Export model';
+En.MIXLY_TENSORFLOW_SAVE_MODEL_NAME = 'Name';
+En.MIXLY_TENSORFLOW_LOAD_MODEL = 'Use imported model';
+En.MIXLY_TENSORFLOW_MODEL_NAME = 'Model name';
+En.MIXLY_TENSORFLOW_PREPARE_PICTURE_TO_TENSOR = 'Preprocess image to tensor';
+En.MIXLY_TENSORFLOW_PREPARE_PICTURE_READ_PICTURE = 'Read image';
})();
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index a5a4103d..5444af27 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -4168,4 +4168,35 @@ ZhHans.MIXLY_TINY_WEB_DB_START_NUMBER = '起始编号';
ZhHans.MIXLY_TINY_WEB_DB_VARIABLE_NUMBER = '变量个数';
ZhHans.MIXLY_TINY_WEB_DB_SEARCH_VARS = '变量名包含的字符';
+ZhHans.MIXLY_TENSORFLOW_INIT_TENSOR = '初始化张量为';
+ZhHans.MIXLY_TENSORFLOW_SEQUENTIAL = '初始化顺序模型';
+ZhHans.MIXLY_TENSORFLOW_INIT_LAYERS_DENSE_LAYER = '构建全连接层';
+ZhHans.MIXLY_TENSORFLOW_OUTPUT_DIMENSION = '输出维度';
+ZhHans.MIXLY_TENSORFLOW_INPUT_SHAPE = '输入形状';
+ZhHans.MIXLY_TENSORFLOW_MODEL = '模型';
+ZhHans.MIXLY_TENSORFLOW_ADD_LAYER = '添加层';
+ZhHans.MIXLY_TENSORFLOW_COMPILE_MODEL = '编译模型';
+ZhHans.MIXLY_TENSORFLOW_LOSS_FUNCTION_TYPE = '损失函数类型';
+ZhHans.MIXLY_TENSORFLOW_MEAN_SQUARED_ERROR = '均方误差';
+ZhHans.MIXLY_TENSORFLOW_OPTIMIZER = '优化器';
+ZhHans.MIXLY_TENSORFLOW_SGD = '随机梯度下降法';
+ZhHans.MIXLY_TENSORFLOW_FIT_MODEL = '训练模型';
+ZhHans.MIXLY_TENSORFLOW_FIT_INPUT_DATA = '输入数据';
+ZhHans.MIXLY_TENSORFLOW_FIT_TARGET_DATA = '目标数据';
+ZhHans.MIXLY_TENSORFLOW_FIT_EPOCHS = '训练迭代次数';
+ZhHans.MIXLY_TENSORFLOW_FIT_VERBOSE = '日志输出级别';
+ZhHans.MIXLY_TENSORFLOW_FIT_RETURN_HISTORY = '返回训练历史对象';
+ZhHans.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY = '从训练历史对象';
+ZhHans.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY_2 = '获取训练损失值数组';
+ZhHans.MIXLY_TENSORFLOW_PREDICT = '使用模型预测';
+ZhHans.MIXLY_TENSORFLOW_PREDICT_INPUT_DATA = '输入数据';
+ZhHans.MIXLY_TENSORFLOW_PREDICT_RETURN_RESULT = '返回预测结果张量';
+ZhHans.MIXLY_TENSORFLOW_GET_TENSOR_DATA = '获取张量中的数据';
+ZhHans.MIXLY_TENSORFLOW_SAVE_MODEL = '保存模型';
+ZhHans.MIXLY_TENSORFLOW_EXPORT_MODEL = '导出模型';
+ZhHans.MIXLY_TENSORFLOW_SAVE_MODEL_NAME = '名称';
+ZhHans.MIXLY_TENSORFLOW_LOAD_MODEL = '使用导入模型';
+ZhHans.MIXLY_TENSORFLOW_MODEL_NAME = '模型名';
+ZhHans.MIXLY_TENSORFLOW_PREPARE_PICTURE_TO_TENSOR = '预处理图像为张量';
+ZhHans.MIXLY_TENSORFLOW_PREPARE_PICTURE_READ_PICTURE = '读入图像';
})();
\ No newline at end of file
diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js
index b0176478..de64d220 100644
--- a/common/msg/blockly/zh-hant.js
+++ b/common/msg/blockly/zh-hant.js
@@ -4163,4 +4163,35 @@ ZhHant.MIXLY_TINY_WEB_DB_START_NUMBER = '起始編號';
ZhHant.MIXLY_TINY_WEB_DB_VARIABLE_NUMBER = '變數個數';
ZhHant.MIXLY_TINY_WEB_DB_SEARCH_VARS = '變數名稱包含的字元';
+ZhHant.MIXLY_TENSORFLOW_INIT_TENSOR = '初始化張量為';
+ZhHant.MIXLY_TENSORFLOW_SEQUENTIAL = '初始化順序模型';
+ZhHant.MIXLY_TENSORFLOW_INIT_LAYERS_DENSE_LAYER = '構建全連接層';
+ZhHant.MIXLY_TENSORFLOW_OUTPUT_DIMENSION = '輸出維度';
+ZhHant.MIXLY_TENSORFLOW_INPUT_SHAPE = '輸入形狀';
+ZhHant.MIXLY_TENSORFLOW_MODEL = '模型';
+ZhHant.MIXLY_TENSORFLOW_ADD_LAYER = '添加層';
+ZhHant.MIXLY_TENSORFLOW_COMPILE_MODEL = '編譯模型';
+ZhHant.MIXLY_TENSORFLOW_LOSS_FUNCTION_TYPE = '損失函數類型';
+ZhHant.MIXLY_TENSORFLOW_MEAN_SQUARED_ERROR = '均方誤差';
+ZhHant.MIXLY_TENSORFLOW_OPTIMIZER = '優化器';
+ZhHant.MIXLY_TENSORFLOW_SGD = '隨機梯度下降法';
+ZhHant.MIXLY_TENSORFLOW_FIT_MODEL = '訓練模型';
+ZhHant.MIXLY_TENSORFLOW_FIT_INPUT_DATA = '輸入數據';
+ZhHant.MIXLY_TENSORFLOW_FIT_TARGET_DATA = '目標數據';
+ZhHant.MIXLY_TENSORFLOW_FIT_EPOCHS = '訓練迭代次數';
+ZhHant.MIXLY_TENSORFLOW_FIT_VERBOSE = '日誌輸出級別';
+ZhHant.MIXLY_TENSORFLOW_FIT_RETURN_HISTORY = '返回訓練歷史對象';
+ZhHant.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY = '從訓練歷史對象';
+ZhHant.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY_2 = '獲取訓練損失值數組';
+ZhHant.MIXLY_TENSORFLOW_PREDICT = '使用模型預測';
+ZhHant.MIXLY_TENSORFLOW_PREDICT_INPUT_DATA = '輸入數據';
+ZhHant.MIXLY_TENSORFLOW_PREDICT_RETURN_RESULT = '返回預測結果張量';
+ZhHant.MIXLY_TENSORFLOW_GET_TENSOR_DATA = '獲取張量中的數據';
+ZhHant.MIXLY_TENSORFLOW_SAVE_MODEL = '保存模型';
+ZhHant.MIXLY_TENSORFLOW_EXPORT_MODEL = '導出模型';
+ZhHant.MIXLY_TENSORFLOW_SAVE_MODEL_NAME = '名稱';
+ZhHant.MIXLY_TENSORFLOW_LOAD_MODEL = '使用導入模型';
+ZhHant.MIXLY_TENSORFLOW_MODEL_NAME = '模型名';
+ZhHant.MIXLY_TENSORFLOW_PREPARE_PICTURE_TO_TENSOR = '預處理圖像為張量';
+ZhHant.MIXLY_TENSORFLOW_PREPARE_PICTURE_READ_PICTURE = '讀入圖像';
})();