You need to enable JavaScript to run this app. 无Eager执行模式下M1端tf.Tensor转numpy并保存为图像的方法
优惠活动
大模型
产品
解决方案
定价
更多

无Eager执行模式下M1端tf.Tensor转numpy并保存为图像的方法

静态图模式下提取sr张量并保存图像的操作方法

当前环境禁用了Eager执行,sr本质是静态计算图上的计算节点,不携带实际运算结果,必须通过显式会话触发计算才能拿到真实像素值,具体操作如下:

  • 创建TensorFlow会话触发实际计算
    适配当前tf2.4的静态图运行逻辑,加载Hub模型权重后执行sr节点,将计算结果转为numpy数组:
    # 接在原代码 sr = model(image) 之后补充
    with tf.compat.v1.Session() as sess:
        # 初始化Hub加载的模型全局权重
        sess.run(tf.compat.v1.global_variables_initializer())
        # 执行sr对应的计算图节点,获取实际运算结果
        sr_array = sess.run(sr)
    
  • 适配图像存储所需的数组格式
    拿到的数组形状为(1, 2880, 4320, 3),存在多余的批量维度,且ESRGAN模型输出的浮点像素可能超出[0,255]的合法图像值范围,需要做格式修正才能正常生成图像:
    # 移除数组第0维的批量维度
    sr_array = np.squeeze(sr_array, axis=0)
    # 将像素值截断到0-255的合法区间,避免存图时出现颜色异常
    sr_array = np.clip(sr_array, 0, 255)
    # 转换为PIL库可识别的uint8图像格式
    sr_image = Image.fromarray(sr_array.astype(np.uint8))
    
  • 保存为本地图像文件
    直接调用PIL的保存接口即可输出最终的超分辨率图像:
    sr_image.save("/Users/alex26/Downloads/sr_output.jpg")
    

注意:该流程和当前环境下配置的MLCompute GPU加速逻辑完全兼容,会话执行时会自动把计算任务路由到M1芯片的GPU端,无需额外调整设备配置。

内容的提问来源于stack exchange,提问作者Ymka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 05:15:03