这几年被问到最多的问题之一就是“现在学TensorFlow还有前途吗”。每次听到这个问题我都忍不住想起2016年自己第一次跑通MNIST时的心情——那会儿TensorFlow几乎是入行的唯一选择论坛上全是讨论静态图、tf.Session的帖子现在倒是反过来了身边人都在聊PyTorch复现论文多方便、生态多活跃好像TensorFlow已经成了过气网红。但实际情况远没有这么简单打开招聘网站TensorFlow相关岗位依然挂着走进生产环境TensorFlow Serving和TFLite还在大量跑着线上流量而2024年的框架选型讨论里TensorFlow和PyTorch依然是绕不开的两个名字。这篇文章不打算站队只想从一个实际用过两边、也被两边坑过的从业者角度聊聊TensorFlow到底是什么、怎么把它装好并跑起来、以及面对新项目时到底该怎么选。1. 为什么2024年还有人认真讨论TensorFlow框架之争的真实战场1.1 从TF 1.x到TF 2.x一次“反人类”设计的彻底纠正很多人没经历过TF 1.x时代不知道TensorFlow当初有多难用。2015年底Google开源TensorFlow时采用的是静态计算图模式你得先把整个计算流程像画电路图一样定义好然后在Session里喂数据执行。听起来很酷写起来很痛苦——想在中间打印个变量看看数值想把循环改成动态逻辑对不起你得先理解占位符placeholder、变量初始化、Session.run的各种细节。我到现在还记得自己写的第一个TF 1.x程序光是让“输入数据”和“模型结构”正确接上就折腾了一下午。那时候的帖子几乎都在问“为什么我打印tensor得到的是一个Tensor对象而不是数值”。这种反人类的体验直接给后来的PyTorch生态输送了大量用户。2019年Google发布TF 2.0算是彻底认了错默认开启Eager Execution动态图机制代码写完直接就能执行不再需要Session同时把Keras整合为官方高层API。这一步说实话走得很对但也晚了两年。那两年恰好是深度学习研究最火热的时期不少研究者已经被PyTorch的“写起来像写普通Python代码”圈粉再也没回头。所以聊到“TensorFlow为什么显得不够流行”不能只看今天得看历史包袱。框架的口碑一旦形成纠正的成本远远高于想象。1.2 学术圈和工业圈的“断层”正在拉大2024年的真实情况是如果你去翻顶级会议的论文代码PyTorch可能是压倒性多数但如果你去看企业的线上系统、传统行业的模型服务、移动端App里跑的模型TensorFlow的存量依然非常庞大。这个断层其实很好理解。研究者的核心诉求是快速迭代、灵活改结构PyTorch的动态图天然贴合这种节奏。而工业级项目更看重部署链路是否成熟、服务会不会稳定、出了问题有没有大厂兜底。TensorFlow从设计之初就把“从训练到部署”作为完整链路来考虑TensorFlow Serving管服务化TFLite管移动端和边缘设备TF.js管浏览器端配合Google Cloud和TPU生态整个体系非常完整。PyTorch这几年虽然也在补部署工具但很多项目落地时依然要借助ONNX转一圈链路中间多一环就多一批维护成本。2024年还有一个新变量是JAX的崛起Google内部很多新模型开始用JAX而不是TensorFlow来训练这又给TensorFlow的未来增加了不确定性。但至少在工程落地这个层面TensorFlow和它的配套工具依然是一套被大量验证过的可靠方案。1.3 别被“热度”带偏框架选择本质上是个业务问题我经常看到有人提问“2024年TensorFlow和PyTorch到底学哪个”评论区吵得不可开交。其实这种问题从一开始就问偏了。框架只是工具真正该问的是你要解决的问题更依赖哪套生态你的工作需要你融入哪个团队你在做的项目生命周期是几个月的小实验还是长达数年的产品线如果是几个月的研究探索PyTorch毫无疑问更顺手如果是给传统企业做一个要线上跑好几年的图像识别服务TensorFlow的部署方案反而更省心如果你进的是银行、汽车、制造业这类信息化系统算法岗的JD里大概率还是写着“熟悉TensorFlow优先”。热度解决不了面试官的需求项目场景才能。所以下结论之前先看清自己面前的真实战场在哪里。这也是后面讲安装、讲实战、讲选型的底色。2. 从零搭好TensorFlow环境选对版本比跑通代码更关键2.1 安装前先想清楚CPU、GPU还是云端Notebook很多人一上来就搜“tensorflow安装”然后照着别人的命令装装完才发现CPU版跑起来慢得没法看。其实安装之前需要先回答一个问题你在什么环境里跑如果你是纯入门想把概念和API先跑通CPU版本完全够用。Fashion MNIST这种小数据集在CPU上训练也就几分钟根本不构成瓶颈。如果你要训练自己的项目或者做稍微大一点的实验那就需要GPU支持。TensorFlow从2.1版本开始把GPU支持合并进了主包不再需要单独安装tensorflow-gpu这个改动让很多人省心不少。第三种选择是直接用云端Notebook比如Google Colab、各类云厂商的GPU实例。新手阶段我最推荐这种方式因为底层驱动、CUDA版本全都帮你配好了你只需要打开浏览器写代码省掉一堆环境问题。等你确定自己真的要长期做深度学习再回头配本地环境也不迟。2.2 用虚拟环境隔离依赖别把系统环境搞乱TensorFlow对Python版本是有选择的。以我长期实践的稳定组合来看Python 3.9到3.11之间是相对安全的地带太新的Python版本可能遇到部分依赖还没适配的尴尬。安装之前先用虚拟环境把项目隔离起来这是我踩过很多次坑之后养成的习惯。推荐用conda或者Python自带的venv二选一即可。我用的是conda理由很实际它不光隔离Python环境还能顺便管理CUDA版本对TensorFlow这种“跟底层库绑定很深”的框架来说非常方便。创建环境的命令也很简单conda create -n tf_env python3.10 conda activate tf_env如果你是纯Python用户用venv也一样python -m venv tf_env source tf_env/bin/activate # Windows下运行 tf_env\Scripts\activate2.3 安装命令与版本匹配激活环境之后安装本身并不复杂一条命令搞定pip install --upgrade pip pip install tensorflow这里要强调一个新手容易忽略的点不要直接pip install tensorflow之后就万事大吉。装完立刻检查版本和依赖情况用下面三行命令做验证python -c import tensorflow as tf; print(tf.__version__) python -c print(tf.config.list_physical_devices(CPU)) python -c print(tf.config.list_physical_devices(GPU))第一行看版本第二行确认CPU可用第三行确认GPU是否被正常识别。如果GPU那行打印出来是空列表说明TensorFlow没有找到你的显卡这时候问题通常出在CUDA驱动或者显卡驱动上而不是pip安装本身。2.4 Docker方式和CUDA问题“一劳永逸”说再见如果你在Linux服务器上做开发我有一个强烈推荐的做法用官方Docker镜像。TensorFlow官方提供了带GPU支持的镜像里面把CUDA、cuDNN这些底层依赖全部打包好了。你再也不用花费一下午去配“CUDA版本要对应驱动版本、cuDNN要对应CUDA版本”这种连环套。我自己的服务器环境现在基本就是这个方案docker pull tensorflow/tensorflow:latest-gpu docker run --gpus all -it --rm -v $(pwd):/workspace tensorflow/tensorflow:latest-gpu bash进去之后直接跑Python脚本就行。注意--gpus all这个参数在宿主机上要求已经装好NVIDIA容器工具包但这比手工配CUDA还是要省事得多。Docker的另一个好处是销毁重建很干净折腾坏了也不影响宿主机环境。2.5 常见安装报错基本都是这五个原因我把这几年帮人排查安装问题时遇到的典型报错整理成了一张表几乎覆盖了90%的安装失败场景报错现象根本原因解决办法ModuleNotFoundError: No module named tensorflow没装成功或装错了环境确认虚拟环境已激活重新pip install tensorflow安装过程中一直报编译错误pip版本太旧或镜像源问题升级pip换官方源或可靠的国内镜像源能import但运行巨慢装成了CPU版且机器没有可用GPU安装对应GPU支持包或换GPU机器Could not load dynamic library libcudnn.so底层CUDA/cuDNN版本和TF不匹配按官方版本对应表安装或用Docker镜像规避OOM when allocating tensor with shape[]显存不够并非安装问题减小batch size开启显存增长配置遇到安装问题先别急着重装。对照这张表定位原因往往比反复卸载安装更高效。3. 核心机制拆解张量、Keras与计算图到底是怎么回事3.1 张量带自动微分能力的多维数组TensorFlow里最核心的数据结构是Tensor张量。你可以把它想象成“带身份信息的NumPy数组”它不光是装数据的容器还自带数据类型、形状、所在设备这些元信息。更关键的是TensorFlow会为张量的运算自动记录求导路径这是梯度下降能跑起来的基石。我习惯用“账本”来理解张量普通数组是一本流水账只记录数据本身张量则像带了复式记账的账本每一次运算都会在后台记录“这笔数据是怎么算出来的”这样梯度反向传播时每个环节的导数值都可以顺着账本追溯出来。这就是为什么TensorFlow的自动微分看起来像魔法原理其实朴素得很。入门阶段最重要的一个操作是记住模型里流动的数据几乎都是Tensor但你用tf.convert_to_tensor()可以把Python列表、NumPy数组转成Tensor反过来用.numpy()方法又能把Tensor转回NumPy。掌握这个转换写代码时就不会被类型卡住。3.2 Eager Execution与静态图动态图赢在“像个正常程序”TF 2.x默认启用了Eager Execution也就是动态图机制。写成a b执行到这一行立刻就能得到结果。这个体验和写普通Python代码没有区别调试时可以随时print中间值也可以用pdb打断点查看状态。相比TF 1.x那种“构建图-执行图”的两段式流程这种“说人话”的方式挽救了一大批初学者的耐心。那静态图是不是就彻底没用了也不完全是。动态图的代价是每次运算都要重新组织执行流程会有一定性能开销静态图则是在运行前先把整个计算流程优化一遍再交给底层执行。TensorFlow里的tf.function配合AutoGraph机制就能把Python代码转换成静态图执行。但这不是入门阶段需要深究的东西我建议你先把动态图模式下的模型构建和训练流程跑顺再去理解图优化。3.3 Keras从“玩具级API”到官方主力TF 2.x真正意义上做对的一件事就是把Keras定位成了官方推荐建模API。Keras提供了三种建模方式Sequential适合线性堆叠的简单网络Functional适合有分支结构、多输入多输出的模型Model子类化则给你最高的自由度在前向传播里可以写任意逻辑。三种方式的选型逻辑很简单能Sequential就Sequential网络复杂到需要共享层或分支时就上Functional真要写研究代码、需要完全自定义前向流程时才用子类化。记住这个优先级可以少走很多弯路。我自己见过不少新手一上来就用最自由的子类化方式结果把简单问题复杂化训练时到处报错。3.4 tf.data数据管道越到后面越重要的性能命门训练速度的瓶颈往往不在GPU算力上而是在“GPU等数据”这件事上。TensorFlow推荐的数据处理方式是tf.data API它能将数据读取、预处理、填充、混洗这些环节构建成一条流水线跟模型训练并行执行。理解它的最好方式是想像一条工厂流水线CPU负责把原材料数据加工成半成品批次GPU负责把半成品组装成成品梯度更新。如果没有流水线就变成了“CPU加工一批GPU等一批加工完了再喂给GPU”GPU大部分时间在空转。用上tf.data之后CPU会提前准备后面几批数据GPU算完当前批次马上就能拿到下一批。这个机制看起来简单实际对训练效率的影响巨大。后面讲实战时我会给出具体写法。3.5 一个常见误解TensorFlow和“只能静态图”之间不能画等号直到今天还会看到一些文章说“TensorFlow是静态图框架不如PyTorch灵活”。这种说法在TF 2.x时代已经站不住了。TF 2.x默认就是动态图PyTorch默认的动态图两者没有本质差别。很多人脑海里的印象还停留在TF 1.x时代这其实是一种滞后认知。真正拉开差距的是两者在部署链路、服务生态、社区文化上的取舍而不是所谓的“动态图还是静态图”。把这一点搞清楚了你就不会被网上的框架论战带节奏。4. 一个可直接复现的上手项目从数据到部署链路4.1 项目目标与数据选择前面讲了半天机制现在来点能动手的东西。我选Fashion MNIST作为上手项目它比手写数字识别(MNIST)更有区分度分类难度适中数据集也只有几十MBCPU上跑都能很快完成。更关键的是它的流程覆盖了“加载数据-构建模型-训练-评估-保存-部署”的完整链路学会之后迁移到自己的项目只是换数据和改模型结构的事。项目的目标是训练一个识别服饰类别的卷积神经网络十类物品包括T恤、裤子、外套、裙子、衬衫等。这个案例在Keras官方文档里也有但我会把代码背后的“为什么”讲清楚。4.2 数据加载与预处理import tensorflow as tf from tensorflow import keras # 首次运行会自动下载数据集之后会缓存在本机 (x_train, y_train), (x_test, y_test) keras.datasets.fashion_mnist.load_data() # 归一化把像素值从0-255压到0-1之间有助于梯度下降稳定收敛 x_train x_train.astype(float32) / 255.0 x_test x_test.astype(float32) / 255.0 # 增加通道维度让数据形状从(28,28)变成(28,28,1)符合Conv2D的输入要求 x_train x_train[..., None] x_test x_test[..., None] print(x_train.shape, y_train.shape) # (60000, 28, 28, 1) (60000,)归一化是个新手容易忽略但极其重要的步骤。原始像素值是0到255的整数数值范围太大直接喂给神经网络会导致梯度更新不稳定。压到0-1之间后各特征尺度统一模型更容易收敛。这一步看着简单不做的代价是训练时loss很可能来回震荡。4.3 模型构建三种方式选最合适的这个任务输入是28x28的小图片用一个小型的卷积神经网络就够了。我直接用Sequential方式清晰直观model keras.Sequential([ keras.Input(shape(28, 28, 1)), # 显式声明输入形状 keras.layers.Conv2D(32, (3, 3), activationrelu), keras.layers.MaxPooling2D((2, 2)), keras.layers.Conv2D(64, (3, 3), activationrelu), keras.layers.MaxPooling2D((2, 2)), keras.layers.Flatten(), keras.layers.Dense(128, activationrelu), keras.layers.Dense(10), # 输出层不加激活函数配合from_logits ])第一个卷积层用了32个3x3卷积核目的是提取低层特征如边缘、纹理池化层做下采样减少参数量的同时增强平移不变性第二个卷积层增加到64个卷积核提取更高层的组合特征。这个结构是图像分类任务里的经典小网络适合做基线。最后一层输出10个神经元不加softmax激活。这里用的是logits形式配合编译时的从logits计算交叉熵数值稳定性更好这是实践中推荐的做法。4.4 编译、训练与回调model.compile( optimizeradam, losskeras.losses.SparseCategoricalCrossentropy(from_logitsTrue), metrics[accuracy], ) history model.fit( x_train, y_train, batch_size128, epochs10, validation_data(x_test, y_test), callbacks[ keras.callbacks.EarlyStopping(monitorval_loss, patience2), keras.callbacks.TensorBoard(log_dir./logs), ], )为什么优化器用adam因为它自带自适应学习率对学习率设置不那么敏感适合新手起步。等你有了经验再换SGD加学习率调度追求更精细的收敛效果。为什么损失函数用SparseCategoricalCrossentropy而不是CategoricalCrossentropy因为y_train是整数标签而非one-hot编码Sparse版本可以直接处理整数标签少一步转换。EarlyStopping是训练时的保命回调验证集loss连续几轮不降就提前停止训练避免后期过拟合浪费时间。TensorBoard回调会把训练日志写到./logs目录训练结束后运行tensorboard --logdirlogs就可以在浏览器里看到曲线。4.5 评估与保存训练完成后先看测试集表现test_loss, test_acc model.evaluate(x_test, y_test, verbose2) print(f测试准确率: {test_acc:.4f})在Fashion MNIST上这个简单卷积网络通常能到90%左右的准确率。如果想提升方向很明确加数据增强、增加网络深度、加Dropout、调学习率。保存模型我推荐用.keras格式model.save(fashion_mnist.keras)这个格式是Keras 3.x推荐的里面保存了模型结构、权重和训练配置加载时一条代码恢复loaded_model keras.models.load_model(fashion_mnist.keras)4.6 部署链路从训练产物到线上服务模型训练好只是第一步部署才是工业落地的重头戏。TensorFlow在这块的方案相当成熟。如果目标是移动端或边缘设备可以转成TFLite格式converter tf.lite.TFLiteConverter.from_keras_model(model) tflite_model converter.convert() with open(fashion_mnist.tflite, wb) as f: f.write(tflite_model)如果目标是服务化部署TensorFlow Serving是官方方案。先把模型导出成SavedModel格式然后用Docker起服务docker run -p 8501:8501 \ --mount typebind,source/path/to/saved_model,target/models/fashion_model \ -e MODEL_NAMEfashion_model \ tensorflow/serving:latest起来之后喂一张图片通过HTTP接口就能拿到预测结果。这套链路的好处是模型更新不需要改服务代码换一个模型目录就行很适合需要频繁迭代模型的业务线。别激动先用这个案例把流程跑通部署时遇到的坑又可以写一篇文章了。5. 跑完代码后的真实体会性能调优与踩坑记录5.1 踩坑一GPU利用率上不去问题出在数据管道我第一次在服务器上跑正式训练时盯着监控面板看了半天发现GPU利用率一直在30%左右徘徊。当时的第一反应是“网络结构不对”改了好几天网络也没用。后来才发现罪魁祸首是训练循环里写的数据读取方式太原始GPU算完一批数据后要干等CPU去读下一批。改成tf.data之后效果立竿见影train_ds tf.data.Dataset.from_tensor_slices((x_train, y_train)) train_ds train_ds.shuffle(10000).batch(128).prefetch(tf.data.AUTOTUNE) model.fit(train_ds, epochs10, validation_dataval_ds)关键的改动就是.prefetch(tf.data.AUTOTUNE)。AUTOTUNE会自动帮你决定到底预取多少批数据不用自己拍脑袋设数字。改完之后GPU利用率直接爬到了70%以上。以后再遇到训练慢先查数据管道别急着怀疑模型。5.2 踩坑二CUDA版本和驱动版本“连环套”TensorFlow对GPU支持越做越友好之后最常见的报错不再是“找不到GPU”而是“Could not load dynamic library libcudnn.so.8”这类底层链接错误。本质原因只有一个TensorFlow编译时依赖的CUDA/cuDNN版本和机器上实际安装的不一致哪怕差一个小版本都可能起不来。我的建议是彻底放弃手工配CUDA这条路。除了前面说的Docker方案另一个替代思路是用TensorFlow官方给出的版本对应关系表严格按表里的版本号安装。别用最新版CUDA也别图省事跳过cuDNN缺一个细节就是一下午。5.3 踩坑三显存OOM的三板斧训练大模型时最常遇到的就是“OOM when allocating tensor with shape[...]”。很多人一看到OOM就以为要换显卡其实大多数情况是小问题。我的处理顺序是先开显存增长让TensorFlow按需申请显存而不是一次性占满整张卡physical_devices tf.config.list_physical_devices(GPU) tf.config.experimental.set_memory_growth(physical_devices[0], True)再把batch size调小比如从128调到64或32。这是最直接有效的手段。最后如果还OOM再考虑用混合精度训练把大部分计算切成半精度显存占用几乎减半。5.4 性能调优清单混合精度、批量大小和Prefetch很多人把调优想得很玄其实就那几个旋钮。训练速度优化优先级如下数据管道加prefetch这项对训练吞吐量影响最大batch size适中太小的话显卡算力吃不饱太大会占满显存且收敛不稳混合精度训练收益明显但不建议新手一上来就开。混合精度的开启方式只有一行tf.keras.mixed_precision.set_global_policy(mixed_float16)但实际效果因模型而异。我在卷积网络上试过提速接近一倍在小型全连接网络上收益却有限还偶尔遇到精度抖动。经验就是模型够大、训练够久才值得上混合精度小实验别折腾。5.5 可复现性设置随机种子只是第一步做研究或写案例时经常要保证实验结果可复现。最基础的做法是开头统一设置随机种子import random import numpy as np tf.random.set_seed(42) random.seed(42) np.random.seed(42)但说实话GPU上某些算子天然带有非确定性设了种子也不能保证100%复现。如果每次训练结果差很多优先排查的是数据顺序有没有固定、有没有开多线程数据增强。训练过程本身不需要追求完全不变能保证结果的稳定趋势即可。6. 最终选择建议TensorFlow还是PyTorch别被舆论带偏到了2024年我依然觉得“学哪个框架”是个伪问题真正的问题是“你的项目需要什么方案”。如果你在高校做研究、发论文、快速验证ideaPyTorch目前确实更主流它的动态图体验、社区资源、论文配套代码都更贴合研究节奏。如果你是做企业级项目、要长期维护线上服务、要面向移动端和嵌入式设备部署TensorFlow的工程生态会帮你省掉很多事。我自己的习惯是两边都保持能用。做探索性实验时用PyTorch快速验证到了要落地、要服务化的阶段再考虑转向TensorFlow部署链路。也有人直接从TensorFlow一路做到底没有问题。框架之争本质上没有技术上的输赢更多是团队磨合和业务需求的权衡。这里给一个实操建议如果你时间有限先把一个框架学到能独立完成“数据加载-模型构建-训练-部署”的完整闭环再顺手了解另一个框架的基本API。深度学习的思想是通用的迁移成本远比你想象的低。真正阻碍你上手的往往不是框架而是对机器学习基础概念的理解深度。写在最后我给新手的真实建议TensorFlow和PyTorch的社区争吵我看过太多但落到实际项目里我越来越觉得工具的“可迁移能力”才是最重要的。我自己从TF 1.x时代被折磨过后来也频繁用PyTorch写研究代码最后两边都能快速上手靠的不是站队而是把底层概念——张量、自动微分、梯度下降、卷积、反向传播——理解透了。框架只是这些概念的载体。如果你现在刚入门我的建议是别在选框架上消耗太多精力。找个数据集跑通一个完整项目把前面说的代码从头到尾写两遍比看一百篇框架对比文章有用。那些让你纠结的“TF和PyTorch到底选哪个”的问题会在你真正做出第一个完整项目之后自然而然地有了答案。最后分享一个小技巧遇到不懂的API与其去搜索引擎猜不如直接在我前面说的虚拟环境下打开Python交互环境import tensorflow as tf之后调用help(tf.keras.layers.Conv2D)。官方文档就在那里多读它几次比焦虑框架趋势有用多了。
企业数字化 ERP 产品动态
相关推荐
辽宁物流行业2026年发展趋势与TOP5企业分析 1. 辽宁物流行业现状与2026年预测辽宁作为东北地区重要的经济中心和交通枢纽,物流行业近年来呈现出快速发展的态势。根据辽宁省物流与采购联合会发布的最新数据,2022年全省物流业总收入达到3800亿元,同比增长8.5%。预计到2026年,这… · 2026/11/3 14:50:02
2025天梯赛L2真题解析与分布式系统实战技巧 1. 天梯赛L2级别赛事背景解析 天梯赛作为国内最具影响力的高校程序设计竞赛之一,其L2级别(原"团队赛"级别)历来是区分选手实力的关键分水岭。2025年的赛事在延续传统的基础上,首次引入了分布式系统设计题和实时数据流处… · 2026/11/3 14:50:02
论文AI检测率过高:现状、工具与应对策略 1. 论文AI检测率过高的现状与挑战 最近两年,学术圈出现了一个让无数研究生和科研工作者头疼的新问题——论文AI检测率过高。我去年指导的5个硕士生中,有3个在预答辩时被系统判定"AI生成内容超过阈值"。最夸张的一个案例是,某985高校… · 2026/11/3 14:50:02
首次开源材料晶体结构生成:40% 通过率吊打 GPT-5.5 的技术拆解 首次开源材料晶体结构生成:40% 通过率吊打 GPT-5.5 的技术拆解 【免费下载链接】Intern-S2-397B 项目地址: https://ai.gitcode.com/InternLM/Intern-S2-397B
材料科学的智能计算,长期卡在"最后一公里":模型能读懂论文、能… · 2026/11/4 6:57:29
三月七小助手:一个按钮跑完 13 项星穹铁道日常 三月七小助手:一个按钮跑完 13 项星穹铁道日常 【免费下载链接】March7thAssistant 日常交给三月七,开拓留给你。《崩坏:星穹铁道》开源自动化助手。 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant
三月七小助手是《… · 2026/11/4 6:57:28
shadPS4 PS4 模拟器编译教程:三条命令在 PC 上启动《血源诅咒》 shadPS4 PS4 模拟器编译教程:三条命令在 PC 上启动《血源诅咒》 【免费下载链接】shadPS4 PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C 项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4
shadPS4 是 C 写的 PS4 模… · 2026/11/4 6:57:28
“书生·端砚“让普通人当科学家:解读上海AI Lab科学智能体的平台化野心 "书生端砚"让普通人当科学家:解读上海AI Lab科学智能体的平台化野心 【免费下载链接】Intern-S2-397B 项目地址: https://ai.gitcode.com/InternLM/Intern-S2-397B
在 WAIC 2026 上,上海人工智能实验室(浦江实验室… · 2026/11/4 6:57:28
Neovim入门指南:dotfiles的lazy.nvim插件体系与目录结构完整解析 【免费下载链接】dotfiles My dotfiles and configs 项目地址: https://gitcode.com/gh_mirrors/dotfiles322/dotfiles 点击查看 免费下载 dotfiles 是一个用 Git 管理的开发者环境配置仓库,其中最精华的部分是一套开箱即用的 Neovim 配置——基于 lazy… · 2026/11/4 6:57:28
第四章 轻量后备:4.9 shmem 后备 BO 的驱动集成 本节先说明驱动如何集成 helper:以 virtio-gpu 为例说明内嵌、回调表与 gem_create_object 钩子,以 panfrost 为例说明如何接入回收;再以 virtio-gpu 的 GUEST blob 的完整链路说明如何从一个 GEM BO 得到 host 可读写的 mem_entry[]。大部分 GEM 回调可直接使用 helper 的包… · 2026/11/4 6:56:28
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46