{"id":22283768,"url":"https://github.com/veaba/learn-tensorflow-js","last_synced_at":"2025-03-25T19:51:38.110Z","repository":{"id":104582187,"uuid":"105360060","full_name":"veaba/learn-tensorflow-js","owner":"veaba","description":" 学习 TensorFlow，机器学习","archived":false,"fork":false,"pushed_at":"2020-04-15T06:33:25.000Z","size":12647,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"2-week-keras-kind","last_synced_at":"2025-01-30T17:39:41.502Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veaba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-30T09:43:51.000Z","updated_at":"2021-07-30T05:52:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"466edabd-2e8e-4a01-b509-343fbc43432a","html_url":"https://github.com/veaba/learn-tensorflow-js","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-tensorflow-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-tensorflow-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-tensorflow-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-tensorflow-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veaba","download_url":"https://codeload.github.com/veaba/learn-tensorflow-js/tar.gz/refs/heads/2-week-keras-kind","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245535441,"owners_count":20631294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-03T16:42:07.018Z","updated_at":"2025-03-25T19:51:38.072Z","avatar_url":"https://github.com/veaba.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# learn-tensorflow-js\n\n启用域名：https://datav.ai/mhw\n\n或者名字：MHWAI\n\n## 疑问\n- 如何导出模型\n- 如何导入模型\n- 如何优化模型\n- 如何提高准确度\n- 如何制作自己的训练集？\n\n\n## 目录\n- [x] 47_keras-ckassify-clothing(Google 图片分类demo)\n- 48_keras-ckassify-imdb(Google 电影评论分类demo，使用hub)\n- TODO 根据昵称来判断是男是女\n- TODO 根据起点小说名称判断它属于什么分类\n\n## 计划：每一天或者每一周 checkout 出来一个分支——预计100周~啊哈哈\n- 一个分支一周的时间\n- 这样的话就可以根据分支的变化日志来追踪整个项目的变更了（此前一直想做的）\n- 先完成手写玩的demo联系\n- 再此基础上做识别怪物\n\n## Tracking Project：TODO \n- 最新的进度在最新分分支里面\n- 先去翻译tensorflow python 版本的API去了（想致富先修路，想开发先翻译文档）\n- [tensorflow-docs](https://github.com/veaba/tensorflow-docs)\n- [tensorflow.js-docs](https://github.com/veaba/tensorflow.js-docs)\n\n\n\n## 相关学习链接\n- [TensorFlow Hub：发布、发现和机器学习模型中可重复利用的部分](https://tensorflow.google.cn/hub/?hl=zh_cn)\n- [TensorFlow Hub：官网](https://tfhub.dev/)\n- [TensorFlow Model](https://github.com/tensorflow/models/tree/master/official)\n- [TensorFlow 库和扩展程序](https://tensorflow.google.cn/resources/libraries-extensions/?hl=zh_cn)\n\n- [TFJS 范例](https://github.com/tensorflow/tfjs-examples/)\n- [TFJS 转Python模型](https://tensorflow.google.cn/js/tutorials?hl=zh_cn#convert_pretained_models_to_tensorflowjs)\n- [极客学院——TensorFlow 官方文档中文版](http://wiki.jikexueyuan.com/project/tensorflow-zh/)\n- [谷歌全新开源人工智能系统TensorFlow官方文档中文版 GitHub仓库，内容同上](https://github.com/jikexueyuanwiki/tensorflow-zh)\n- [TensorFlow JS版官网](https://www.tensorflow.org/js/)\n- [3行代码就能通过浏览器从任意方向跟踪图像中的手的动作Handtrack.js](https://towardsdatascience.com/handtrackjs-677c29c1d585)\n- [handtrack.js github仓库](https://github.com/victordibia/handtrack.js)\n- [使用TensorFlow进行训练识别视频图像中物体-文章展示](http://ask.ainoob.cn/article/69)\n- [python opencv 教程](https://docs.opencv.org/3.4/d6/d00/tutorial_py_root.html)\n- [ffmpeg.win32，!!!暂无地址]()\n\n- [[AI开发]Python+Tensorflow打造自己的计算机视觉API服务-文章](https://www.cnblogs.com/xiaozhi_5638/p/9268715.html)\n- [vision-web-service-上面文章配套的源码](https://github.com/sherlockchou86/vision-web-service)\n\n- [三分钟训练眼球追踪术，AI就知道你在盯着哪个妹子 | TensorFlow.js代码](https://cloud.tencent.com/developer/article/1349501)\n\n- [tfjs-vis 是一个用于在浏览器内实现可视化的小型库，用于TensorFlow.js。](https://github.com/tensorflow/tfjs-vis)\n- [tfjs-demo](https://github.com/tensorflow/tfjs-examples)\n\n- [tfjs：Real-time Human Pose Estimation in the Browser with TensorFlow.js-文章](https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-tensorflow-js-7dd0bc881cd5)\n\n\n- [Go语言跨平台自动化Gui系统,控制鼠标和键盘等](https://github.com/go-vgo/robotgo)\n\n- [Spy++ —— 窗口、消息查看分析利器-文章](https://blog.csdn.net/qq_25408423/article/details/80884114)\n\n- [ PE Explorer 可以查看DLL 有哪些输出函数]()\n\n- [用Go语言写一个Windows的外挂 (上)](https://studygolang.com/articles/9862)\n\n- [Python去控制鼠标键盘：PyAutoGUI 文章](https://www.cnblogs.com/fanghao/p/8453207.html)\n\n- ❤[tensorflow.js 更多的demo](https://github.com/tensorflow/tfjs-examples/)\n\n- [基于Anaconda 安装tensorflow](https://www.jianshu.com/p/42a939285d7a)\n\n- [Anaconda 更改源](https://jingyan.baidu.com/article/1876c8527be1c3890a137645.html)\n\n- [scrapy 爬虫工具，python 依赖包]()\n\n- 国内镜像安装opencv-python\n\u003e pip install opencv-python -i  https://pypi.douban.com/simple\n\n- [基础- tensorflow](http://c.biancheng.net/view/1880.html)\n\n\n## 项目背景\n\n\u003e 来源，最近在玩一款单机游戏——《怪物猎人：世界》，水平很菜，在肝中。挺好玩，但是呢，这游戏没显示怪物血量，每次都得会营地去更换装备。假如，存在一款辅助性工具，狩猎怪物,在打斗的时候，根据玩家的语音、手势即时的更换装备，这样是不是很酷呢？\n\n- 首先更换装备，其实使用CE去更改内存的方式应该可以实现的吧，这个没有试过\n- “剑来”、“刀来”，“一只穿云箭”，“虫棍”......，突然就更换装备（语音控制）\n- “换装”（类似《妖精的尾巴》里面的妖精女王的技能），想想都很酷（语音控制）\n- 对着摄像头去对比下手势，就换下装备，呼呼。。不敢想了。\n\n既然，理论上能够实现，那为什么不去试一下呢？哪怕失败~~~，我又不恐惧它。\n\n这个部位，可能用于项目起初的控制装备的方式之一\n\n## Tensorflow 关注的几个模块\n\n- 模型 https://tensorflow.google.cn/js/models?hl=zh_cn\n\n\n## tensorflow.js 的API\nhttps://js.tensorflow.org/api/latest/?hl=zh_cn\n\n- AdadeltaOptimizer: ƒ e(e,n,r)\n- AdagradOptimizer: ƒ e(e,n)\n- AdamOptimizer: ƒ e(e,n,r,i)\n- AdamaxOptimizer: ƒ e(e,n,r,i,o)\n- Callback: ƒ e()\n- CallbackList: ƒ t(t,e)\n- CustomCallback: ƒ e(e)\n- DataStorage: ƒ t(t)\n- ENV: t {features: {…}, registry: {…}, backendName: \"webgl\", globalEngine: t}\n- Environment: ƒ t(t)\n- GraphModel: ƒ t(t,e)\n- History: ƒ e()\n- InputSpec: ƒ (t)\n- KernelBackend: ƒ t()\n- LayerVariable: ƒ t(t,e,n,r,i)\n- LayersModel: ƒ e(e)\n- MomentumOptimizer: ƒ e(e,n,r)\n- Optimizer: ƒ e()\n- RMSPropOptimizer: ƒ e(e,n,r,i,o)\n- RNN: ƒ e(e)\n- Rank: {R0: \"R0\", R1: \"R1\", R2: \"R2\", R3: \"R3\", R4: \"R4\", …}\n- Reduction: {0: \"NONE\", 1: \"MEAN\", 2: \"SUM\", 3: \"SUM_BY_NONZERO_WEIGHTS\", NONE: 0, MEAN: 1, SUM: 2, SUM_BY_NONZERO_WEIGHTS: 3}\n- SGDOptimizer: ƒ e(e)\n- Sequential: ƒ e(e)\n- SymbolicTensor: ƒ (t,e,n,r,i,o,a)\n- Tensor: ƒ t(t,e,n,r,i)\n- TensorBuffer: ƒ t(t,e,n)\n- Variable: ƒ e(e,n,r)\n- abs: ƒ ()\n- acos: ƒ ()\n- acosh: ƒ ()\n- add: ƒ ()\n- addN: ƒ ()\n- addStrict: ƒ ()\n- all: ƒ ()\n- any: ƒ ()\n- argMax: ƒ ()\n- argMin: ƒ ()\n- asin: ƒ ()\n- asinh: ƒ ()\n- atan: ƒ ()\n- atan2: ƒ ()\n- atanh: ƒ ()\n- avgPool: ƒ ()\n- basicLSTMCell: ƒ ()\n- batchNorm: ƒ ()\n- batchNorm2d: ƒ ()\n- batchNorm3d: ƒ ()\n- batchNorm4d: ƒ ()\n- batchNormalization: ƒ ()\n- batchNormalization2d: ƒ ()\n- batchNormalization3d: ƒ ()\n- batchNormalization4d: ƒ ()\n- batchToSpaceND: ƒ ()\n- browser: {toPixels: ƒ, fromPixels: ƒ}\n- buffer: ƒ zo(t,e,n)\n- cast: ƒ ()\n- ceil: ƒ ()\n- clipByValue: ƒ ()\n- clone: ƒ ()\n- complex: ƒ ()\n- concat: ƒ ()\n- concat1d: ƒ ()\n- concat2d: ƒ ()\n- concat3d: ƒ ()\n- concat4d: ƒ ()\n- constraints: {maxNorm: ƒ, unitNorm: ƒ, nonNeg: ƒ, minMaxNorm: ƒ}\n- conv1d: ƒ ()\n- conv2d: ƒ ()\n- conv2dDerFilter: ƒ ()\n- conv2dTranspose: ƒ ()\n- conv3d: ƒ ()\n- cos: ƒ ()\n- cosh: ƒ ()\n- cumsum: ƒ ()\n- customGrad: ƒ Vt(t)\n- data: {array: ƒ, Dataset: ƒ, zip: ƒ, CSVDataset: ƒ, TextLineDataset: ƒ, …}\n- deprecationWarn: ƒ Pt(t)\n- depthToSpace: ƒ ()\n- depthwiseConv2d: ƒ ()\n- disableDeprecationWarnings: ƒ zt()\n- dispose: ƒ (t)\n- disposeVariables: ƒ ()\n- div: ƒ ()\n- divStrict: ƒ ()\n- dot: ƒ ()\n- elu: ƒ ()\n- enableDebugMode: ƒ Ft()\n- enableProdMode: ƒ Lt()\n- environment: {EPSILON_FLOAT16: 0.0001, EPSILON_FLOAT32: 1e-7, Environment: ƒ, enableProdMode: ƒ, enableDebugMode: ƒ, …}\n- equal: ƒ ()\n- equalStrict: ƒ ()\n- erf: ƒ ()\n- exp: ƒ ()\n- expandDims: ƒ ()\n- expm1: ƒ ()\n- eye: ƒ ()\n- fft: ƒ ()\n- fill: ƒ Be(t,e,n)\n- floor: ƒ ()\n- floorDiv: ƒ ()\n- fused: {matMul: ƒ}\n- gather: ƒ ()\n- gatherND: ƒ ()\n- getBackend: ƒ ()\n- grad: ƒ (t)\n- grads: ƒ (t)\n- greater: ƒ ()\n- greaterEqual: ƒ ()\n- greaterEqualStrict: ƒ ()\n- greaterStrict: ƒ ()\n- ifft: ƒ ()\n- imag: ƒ ()\n- image: {resizeBilinear: ƒ, resizeNearestNeighbor: ƒ, nonMaxSuppression: ƒ, nonMaxSuppressionAsync: ƒ, cropAndResize: ƒ}\n- initializers: {zeros: ƒ, ones: ƒ, constant: ƒ, randomUniform: ƒ, randomNormal: ƒ, …}\n- input: ƒ Pd(t)\n- io: {browserFiles: ƒ, browserHTTPRequest: ƒ, concatenateArrayBuffers: ƒ, decodeWeights: ƒ, encodeWeights: ƒ, …}\n- irfft: ƒ ()\n- keep: ƒ (t)\n- layers: {inputLayer: ƒ, elu: ƒ, reLU: ƒ, leakyReLU: ƒ, prelu: ƒ, …}\n- leakyRelu: ƒ ()\n- less: ƒ ()\n- lessEqual: ƒ ()\n- lessEqualStrict: ƒ ()\n- lessStrict: ƒ ()\n- linalg: {gramSchmidt: ƒ, qr: ƒ}\n- linspace: ƒ Ue(t,e,n)\n- loadGraphModel: ƒ (t,e)\n- loadLayersModel: ƒ (t,e)\n- localResponseNormalization: ƒ ()\n- log: ƒ ()\n- log1p: ƒ ()\n- logSigmoid: ƒ ()\n- logSoftmax: ƒ ()\n- logSumExp: ƒ ()\n- logicalAnd: ƒ ()\n- logicalNot: ƒ ()\n- logicalOr: ƒ ()\n- logicalXor: ƒ ()\n- losses: {absoluteDifference: ƒ, computeWeightedLoss: ƒ, cosineDistance: ƒ, hingeLoss: ƒ, …}\n- matMul: ƒ ()\n- math: {confusionMatrix: ƒ}\n- max: ƒ ()\n- maxPool: ƒ ()\n- maximum: ƒ ()\n- maximumStrict: ƒ ()\n- mean: ƒ ()\n- memory: ƒ ()\n- metrics: {binaryAccuracy: ƒ, binaryCrossentropy: ƒ, sparseCategoricalAccuracy: ƒ, categoricalAccuracy: ƒ, categoricalCrossentropy: ƒ, …}\n- min: ƒ ()\n- minimum: ƒ ()\n- minimumStrict: ƒ ()\n- mod: ƒ ()\n- modStrict: ƒ ()\n- model: ƒ (t)\n- models: {modelFromJSON: ƒ}\n- moments: ƒ ()\n- movingAverage: ƒ ()\n- mul: ƒ ()\n- mulStrict: ƒ ()\n- multiRNNCell: ƒ ()\n- multinomial: ƒ ()\n- neg: ƒ ()\n- nextFrame: ƒ Fl()\n- norm: ƒ ()\n- notEqual: ƒ ()\n- notEqualStrict: ƒ ()\n- oneHot: ƒ ()\n- ones: ƒ ze(t,e)\n- onesLike: ƒ ()\n- op: ƒ Se(t)\n- outerProduct: ƒ ()\n- pad: ƒ ()\n- pad1d: ƒ ()\n- pad2d: ƒ ()\n- pad3d: ƒ ()\n- pad4d: ƒ ()\n- pool: ƒ ()\n- pow: ƒ ()\n- powStrict: ƒ ()\n- prelu: ƒ ()\n- print: ƒ Po(t,e)\n- prod: ƒ ()\n- profile: ƒ (t)\n- rand: ƒ ()\n- randomNormal: ƒ ()\n- randomUniform: ƒ ()\n- range: ƒ We(t,e,n,r)\n- real: ƒ ()\n- reciprocal: ƒ ()\n- registerCallbackConstructor: ƒ (t,e)\n- regularizers: {l1l2: ƒ, l1: ƒ, l2: ƒ}\n- relu: ƒ ()\n- reshape: ƒ ()\n- reverse: ƒ ()\n- reverse1d: ƒ ()\n- reverse2d: ƒ ()\n- reverse3d: ƒ ()\n- reverse4d: ƒ ()\n- rfft: ƒ ()\n- round: ƒ ()\n- rsqrt: ƒ ()\n- scalar: ƒ Re(t,e)\n- scatterND: ƒ ()\n- selu: ƒ ()\n- separableConv2d: ƒ ()\n- sequential: ƒ (t)\n- serialization: {Serializable: ƒ, SerializationMap: ƒ, registerClass: ƒ}\n- setBackend: ƒ (t,e)\n- setdiff1dAsync: ƒ (t,e)\n- sigmoid: ƒ ()\n- sign: ƒ ()\n- sin: ƒ ()\n- sinh: ƒ ()\n- slice: ƒ ()\n- slice1d: ƒ ()\n- slice2d: ƒ ()\n- slice3d: ƒ ()\n- slice4d: ƒ ()\n- softmax: ƒ ()\n- softplus: ƒ ()\n- spaceToBatchND: ƒ ()\n- sparseToDense: ƒ ()\n- spectral: {fft: ƒ, ifft: ƒ, rfft: ƒ, irfft: ƒ}\n- split: ƒ ()\n- sqrt: ƒ ()\n- square: ƒ ()\n- squaredDifference: ƒ ()\n- squaredDifferenceStrict: ƒ ()\n- squeeze: ƒ ()\n- stack: ƒ ()\n- step: ƒ ()\n- stridedSlice: ƒ ()\n- sub: ƒ ()\n- subStrict: ƒ ()\n- sum: ƒ ()\n- tan: ƒ ()\n- tanh: ƒ ()\n- tensor: ƒ Te(t,e,n)\n- tensor1d: ƒ De(t,e)\n- tensor2d: ƒ Oe(t,e,n)\n- tensor3d: ƒ _e(t,e,n)\n- tensor4d: ƒ Me(t,e,n)\n- tensor5d: ƒ Le(t,e,n)\n- tensor6d: ƒ Fe(t,e,n)\n- test_util: {WEBGL_ENVS: {…}, PACKED_ENVS: {…}, NODE_ENVS: {…}, CHROME_ENVS: {…}, BROWSER_ENVS: {…}, …}\n- tidy: ƒ (t,e)\n- tile: ƒ ()\n- time: ƒ (t)\n- topk: ƒ ()\n- train: {sgd: ƒ, momentum: ƒ, adadelta: ƒ, adagrad: ƒ, rmsprop: ƒ, …}\n- transpose: ƒ ()\n- truncatedNormal: ƒ ()\n- unsortedSegmentSum: ƒ ()\n- unstack: ƒ ()\n- util: {shuffle: ƒ, clamp: ƒ, nearestLargerEven: ƒ, sum: ƒ, randUniform: ƒ, …}\n- valueAndGrad: ƒ (t)\n- valueAndGrads: ƒ (t)\n- variable: ƒ (t,n,r,i)\n- variableGrads: ƒ Wt(t,e)\n- version: {tfjs-core: \"1.0.0\", tfjs-data: \"1.0.0\", tfjs-layers: \"1.0.0\", tfjs-converter: \"1.0.0\", tfjs: \"1.0.0\"}\n- version_converter: \"1.0.0\"\n- version_core: \"1.0.0\"\n- version_layers: \"1.0.0\"\n- webgl: {gpgpu_util: {…}, webgl_util: {…}, MathBackendWebGL: ƒ, GPGPUContext: ƒ}\n- where: ƒ ()\n- whereAsync: ƒ (t)\n- zeros: ƒ Pe(t,e)\n- zerosLike: ƒ ()\n\n## tensroflow python API\n\n\n## 模块化开发：todo\n|优先级|模块化|测试的仓库|描述||\n| --- | --- | --- | --- | --- |\n|0|训练Tensorflow识别手写图片||||\n|1|汇编去捕获内存和更改内存的值||这是直接关系到后续工作的核心部位||\n|2|《怪物猎人：世界》——怪物识别码||||\n|3|《怪物猎人：世界》——道具识别码||||\n|4|《怪物猎人：世界》——技能识别码||||\n|5|《怪物猎人：世界》——素材识别码||药草之类||\n|6|《怪物猎人：世界》——合成识别码||||\n|7|《怪物猎人：世界》——武器识别码||||\n|8|《怪物猎人：世界》——装备识别码||||\n|9|《怪物猎人：世界》——地图识别码||||\n|10|《怪物猎人：世界》——任务识别码||||\n|11|《怪物猎人：世界》——攻击姿势识别码||||\n|12|《怪物猎人：世界》——防御姿势识别码||||\n|13|《怪物猎人：世界》——一般姿势识别码||逃跑||\n|14|《怪物猎人：世界》——小型怪物识别码||||\n|14|《怪物猎人：世界》——生物分类识别码||古龙、还是牙龙分类||\n|15|《怪物猎人：世界》——怪物的技能数识别码||||\n|16|《怪物猎人：世界》——护石识别码||||\n|17|《怪物猎人：世界》——宝珠识别码||||\n|18|《怪物猎人：世界》——计算伤害识别码||||\n|19|《怪物猎人：世界》——营地识别码||||\n|20|《怪物猎人：世界》——属性识别码||怪物什么属性||\n|21|《怪物猎人：世界》——营地识别码||||\n|22|《怪物猎人：世界》——联机下，团队输出识别码||||\n|23|《怪物猎人：世界》———联机下，投掷器识别码||||\n|24|《怪物猎人：世界》———联机下，异常状态识别码||||\n|25|《怪物猎人：世界》———联机下，发现识别码||||\n|26|《怪物猎人：世界》———地图药草采集区域||||\n|26|《怪物猎人：世界》———地图矿石采集区域||||\n|26|《怪物猎人：世界》———地图陷阱采集区域||||\n|26|《怪物猎人：世界》———地图水域采集区域||哪个地图哪个水域出现哪种鱼||\n|27|《怪物猎人：世界》———投掷器识别码||||\n|28|《怪物猎人：世界》———血量预估识别码||||\n|30|程序控制键盘||pyautogui：[Python直接控制鼠标键盘](https://www.cnblogs.com/fanghao/p/8453207.html)||\n|31|语音识别||通过语音得到预设的值，语音-\u003e识别-\u003e归类为某个指令||\n|32|怪物图片分类识别||机器学习怪物的模型，||\n|33|从视频上学习怪物的姿态||||\n|34|计算技能分析||||\n|35|如何去识别人体的身姿||||\n|36|如何去识别手势||||\n|37|摄像头识别||||\n|38|opencv相关||||\n|39|通过AI识别怪物种类|Kuril yak|||\n|40|基于Tensorflow.js Node,.js 音高预测||||\n|41|MINIST数字识别器|https://github.com/tensorflow/tfjs-examples/tree/master/mnist|||\n|42|加法RNN，训练模型从文本样本中学习加法|https://github.com/tensorflow/tfjs-examples/tree/master/addition-rnn|||\n|43|鸢尾花分类,使用表格式数据对花朵进行分类|https://github.com/tensorflow/tfjs-examples/tree/master/iris|||\n|44|TensorFlow.js 训练图片分类|||使用mobilenet API ，效果真渣|\n|45|TensorFlow.js 训练手写|||||||\n|46|python-opencv 识别图片|https://www.kancloud.cn/aollo/aolloopencv/259610|||\n||||||\n\n\n## 怪物图片/视频素材\n\n### 大型怪物\n\n|种属|名字|级别|属性|有效属性|\n| --- | --- | --- | --- | --- |\n|牙龙种|大凶豺龙|初阶|\n|鸟龙种|骚鸟|初阶/进阶||\n|鸟龙种|毒妖鸟|初阶/进阶||\n|牙龙种|飞雷龙|初阶/进阶||\n||凶鄂龙|初阶||\n||雌火龙|初阶/进阶||\n||火龙|初阶/进阶||\n||土砂龙|初阶||\n|鱼龙种|泥鱼龙|初阶/进阶||\n|飞龙种|角龙|初阶/进阶||\n|飞龙种|黑角龙|进阶||\n|飞龙种|苍火龙|进阶||\n|飞龙种|樱火龙|进阶||\n||骨锤龙|低阶||\n||爆锤龙|进阶||\n||爆麟龙|||\n||大凶颚龙|||\n||惨爪龙|||\n||眩鸟|||\n||风飘龙|||\n||浮空龙|||\n|古龙|冰麒麟|||\n|古龙|麒麟|||\n||岩贼龙|||\n|鱼龙种|熔岩龙|||\n||恐暴龙|||\n||灭尽龙|||\n||钢龙|||\n||炎王龙|||\n||尸套龙|||\n||冥灯龙|||\n\n### 小型怪物\n|分类|名字||\n| --- | --- | --- |\n|牙龙|大凶豺龙||\n||||\n||||\n||||\n||||\n\n## 必备条件\n\n|知识技能|需要掌握程度|目前掌握程度|是否具备条件|描述|\n| --- | --- | --- | --- | --- | \n|Opencv|20%|0%|×|有书，没看过...|\n|ffmpeg|30%|0%|×|一个转换视频的工具|\n|TensorFlow|20-30%|0%|×|贼烦算法！shit| \n|TensorFlow.js|50%|0%|×|js版本的tensorflow|\n|Handtrack.js|50%|0%|×|手势追踪的一个库|\n|Python|10%-30%|20%|√|能够使用实现一些实践|\n|Node.js|30%|60%|√|很熟悉|\n|浏览器前端知识|40%|80%|√|差不多精通级|\n|汇编|30%|5%|×|最难了|\n|计算机原理和内存|10%|0%|×|了解其机制|\n|图像识别|30%|0%|×|需要了解原理|\n|语音识别|30%|0%|×|需要了解原理|\n||||||\n\n\n## 软件设计\n\n### 更改内存的值去实现变更道具\n- 核心\n\n### 怪物分类识别（机器学习）\n\n根据怪物的图片，先简单识别名称\n\n### 怪物姿态识别（机器学习）\n\n- 通过识别怪物的姿态，以及攻击方式 https://experiments.withgoogle.com/move-mirror，这个demo 展示了可以识别人的姿态\n    - 类别（鸟类、飞龙、牙龙类、古龙类）\n    - 名字（炎王龙、灭尽龙，唯一值）\n    - 姿态分析：\n        - 第一步：先识别当前什么姿态，这个姿态用什么技能\n        - 第二步：预测这个姿态下的下一个技能的倒计时，以及范围\n- 姿态识别技能\n\n- 姿态预测下一个技能，以及下下一个技能\n\n- 技能补位检测：预测不受攻击的站位和区域，\n- 预测可能出现的漏洞：（这个有点扯，先放着吧）\n\n\n### 手势识别\n- 可以通过已有的类库 handtrack.js实现控制\n- 通过手势变更装备\n\n### 语音识别\n- 通过识别语音，目前暂定百度语音的API，去更换装备或者道具\n- 需要准确识别道具的名称\n- 合成指令：通过A+B等合成\n- “剑来”、“刀来”，“一只穿云箭”，“虫棍”......，突然就更换装备（语音控制）\n- “换装”（类似《妖精的尾巴》里面的妖精女王的技能），想想都很酷（语音控制）\n\n### 指令预设：\n\n- 合成 xx\n- 换装 xx\n- 刀来\n- 太刀\n- 弓箭\n- 操虫棍\n- 使用药水\n- 使用大药水\n- 使用麻痹陷阱\n- 使用麻醉捕获球\n- 技能指令：剑气斩巴拉巴拉之类的，\n\n\n### 高级模式下（终极版概念）\n- 1：1 绘制玩家的姿态和游戏画面的怪物身姿比例\n- 通过识别玩家的姿态和手拿一把太刀的劈砍攻击姿态和语音辅助，去隔空鼠标来和PC上游戏画面的人物交互\n    - 在一个大的空旷空间内，摄像头识别真实玩家的身姿、位置来具象化投影怪物（和AR游戏一样吧，这里设想）\n    - 语音为控制指令\n- 这一个步骤比较麻烦的一点是：如何通过外部的API去控制鼠标和键盘的参数，因为键盘和鼠标属于外部的IO设备，这个如何控制？现在还是个空白，没什么概念。\n- 需要非常专业的设备+场地才能支持到这一步，很麻烦\n\n## 难点：\n- 如何隔空或者获取鼠标参数？\n- 如何定位全部的内存参数和变更？\n\n\n## 思考，人类遗传变量：（瞎扯的，2019年9月26日16:48:31）\n\n因为目前为止：不知道神经网络，所以瞎想的。\n\n思考这样的一种模式，模仿人类的学习行为：\n\n- 存在一个变量：张三（拟人化）\n- 在没有赋值或者push 任何值时候，隐形继承了上一代的方法或者属性（当然，假如他是第一代）\n- 随后一定时间内，给喂食，比如增加各种属性，color、bg、name等等，\n- 训练他知识，abc、123，算术\n- 上中学，什么卷积巴拉巴拉之类的高阶技能\n- 他可以看到东西，视频，也可以识别图片、文字、声音，分类\n- 他也会自己干活，比如自己爬虫东西给自己\n- 因为张三可能跟了一群坏朋友，自己变坏了，被抓监狱。程序终止\n\n- 以上循环一遍，或者被抓监狱还在继续，直到生命周期为0\n- 比如他有自己的生命值，被清空了。\n- 他也会承受伤害，性格等。\n- 假如，张三暴力性格突出，但也并非这人就一直暴力\n- 引入生命倒计时的机制，比如生命什么的也会减去寿命，吃药呢又续命\n\n- 假设同时出生100万个张三，我们差不多能够得到这么多数据的张三，然后继续迭代死亡衍生下一代，假如和异性交配的话可以clone 新的一代出来，\n- 时间加速迭代1亿倍和样本数量1000万亿\n- 他能够避免人类的缺点，比如随时可以记忆，记忆不丢失，也可以传递给后代（记忆基因遗传）\n\n- 张三遗传基因，带有自己的性别，男性的话，XY，女性：XX,组合出来是什么，下一代就是什么类型，完全可以匹配人类的性别遗传方面\n\n- 情感这块应该如何设计？\n- 外部应激反应系统\n\n\n- 可能存在，张三三十岁后和基因携带预估模型和此刻现实的模型，匹配度高，则认为是优秀的\n\n- 问：我们最终会得到怎么的一个张三？\n- 忽略的一点：假如资源不够，张三没有饭吃也会死亡\n- 这个数据量又有多大？\n- 影响张三的生存因素：病痛、意外、夭折、随机性，所以张三意识到为了活着，他能够干嘛？\n- 喂给他要有多大的数据呀？家人，法律，语文、数学....元素周期，化学反应\n\n- 创新能力，主动发现和学习，规划\n\n## 思考：遗传式神经网络/继承式神经网络/家族式神经网络/守望者神经网络（瞎扯的，2019年9月26日16:36:52）\n因为目前为止：不知道神经网络，所以瞎想的。\n\n- 训练100次\n- 第一次的结果指导第二次\n- 就像家族一样，爸爸(B)指导儿子(C)，爷爷(A)指导爸爸的同时也指导儿子，此时（A）成功率只有0.000001%，但C的结果有很大的一份继承上一辈的判断为依据\n- 训练100次后，就有了一个很大的庞大家族，假如第一代到第100代都没死，然后A生了B之后，再生了B-2,B-2又生了C-2，这样，就有1**100 的层级关系网络，哇，这个关系就复杂了，H-N可以知道任意的Z-N的一代，当然会分配一定的参数在里面作为下一代的判断依据。\n- 把训练次数提高到10000，...，1000w，看最后一代的判断结果是否正确\n- 然后把1000w的最后一代作为新的一次轮回的第一代，再传承100代、\n- 任何上一辈都可以指导下一辈任意代的结果\n- 然后用最后一代或者增加人为调参，筛选出来几率高的辈数，和传承节点，最后一代成员的缺漏，由上一辈或者同辈正确的那个人所知道的知识补充进来，这样就将100代，浓缩或者扁平化为新的成功率最高的一代了。\n- 得到新的一代，开启新一轮的迭代更新。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Flearn-tensorflow-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveaba%2Flearn-tensorflow-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Flearn-tensorflow-js/lists"}