tensorflow/pytorch/mindspore在VGG16前向传播上的性能对比
首先说下mindspore,作为华为的主打软件产品,该计算框架可用性一直较差,不同版本不同计算硬件下的代码往往都不是完全兼容的,也就是说你在mindspore的官网上找到的VGG预训练模型的代码是mindspore-1.5.0的版本在ascend平台的,如果你用mindspore-gpu-1.9.0的版本就无法运行,这是mindspore最常见的错误问题,因此mindspore在VGG16前向传播的性能表现为零,因为根本就无法运行官方的源代码,除非你手动去修改mindspore的框架代码,这事情我去年是会这么干的,今年我说啥也不会干了。如果你给一个开源的产品提了N多的意见,结果过好久一看,啥变化没有,如果非说有变化那就是变得越来越差了,那估计换谁也都不会支持了。
TensorFlow这里使用的是1.14.0版本,由于TensorFlow在1.x和2.x之间上的巨大差异,以及2.x版本的较差使用性,因此这里使用的是TensorFlow的作为经典的版本1.14.0,当然并没有使用TensorFlow的最新版本来比较对于TensorFlow来说并不很公平,但是TensorFlow2.x版本的相关代码和技术博客基本已经从互联网上绝迹,作为一个几乎要濒临灭绝的计算框架在这里使用旧版本也是实属无奈。相关代码参考:
【转载】 Tensorflow如何直接使用预训练模型(vgg16为例)

Pytorch
运行版本gpu1.13.0:

import torch
from torchvision import datasets, models, transforms
import numpy as np # with torch.no_grad():
# model_ft = models.vgg16(pretrained=True).to("cuda:1")
model_ft = models.vgg16(pretrained=True).to("cuda:1") batchsize=32 import time
a_time = time.time()
for _ in range(500):
images = np.random.random(batchsize*224*224*3).reshape(batchsize,3,224,224)
model_ft(torch.tensor(images, dtype=torch.float32, device='cuda:1')) print(time.time()-a_time)

=====================================
运行硬件平台:
CPU: 5.0Ghz下的因特尔10700k
GPU: RTX2070SUPER
其他参数:
batch_size=32
迭代次数:500
对比结果:
mindspore-gpu-1.9.0版本的性能表现:0分(根本无法运行)
TensorFlow-gpu-1.14.0版本的性能表现:用时170秒
Pytorch-gpu-1.13.0版本的性能表现:用时42秒
================================================
PS: 可以看到在现如今的深度学习框架问题上,不论是易用性还是整体性能上pytorch都已经成为了当之无愧的NO.1,虽然TensorFlow也还能用,不过已经在多个方面上被pytorch超越了,如果非说pytorch有不如TensorFlow的地方那估计也就是曾经的历史遗留的项目了,而至于mindspore的gpu版本这里基本可以认为是不可用的状态,当然mindspore框架的主要定位目标平台是ascend平台,所以或许mindspore在ascend平台上会有截然不同的表现也是不可知晓的。
---------------------------------------------------
tensorflow/pytorch/mindspore在VGG16前向传播上的性能对比的更多相关文章
- 吴裕雄 python 神经网络——TensorFlow 三层简单神经网络的前向传播算法
import tensorflow as tf w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1)) w2= tf.Variable( ...
- Tomcat 7优化前及优化后的性能对比
Tomcat 7在我们日常开发.测试.生产环境都会使用到,但对于大部分开发人员来说,对其性能还是没有多大了解.本文就对它做一次性能测试,对比优化前后的性能区别. 一.运行环境 CPU: Intel(R ...
- TensorFlow笔记-04-神经网络的实现过程,前向传播
TensorFlow笔记-04-神经网络的实现过程,前向传播 基于TensorFlow的NN:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型 张量(tenso ...
- Tensorflow实现神经网络的前向传播
我们构想有一个神经网络,输入为两个input,中间有一个hidden layer,这个hiddenlayer当中有三个神经元,最后有一个output. 图例如下: 在实现这个神经网络的前向传播之前,我 ...
- tensorflow 模型前向传播 保存ckpt tensorbard查看 ckpt转pb pb 转snpe dlc 实例
参考: TensorFlow 自定义模型导出:将 .ckpt 格式转化为 .pb 格式 TensorFlow 模型保存与恢复 snpe tensorflow 模型前向传播 保存ckpt tensor ...
- Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股
第一讲:人工智能概述 第三讲:Tensorflow框架 前向传播: 反向传播: 总的代码: #coding:utf-8 #1.导入模块,生成模拟数据集 import t ...
- 实现属于自己的TensorFlow(一) - 计算图与前向传播
前段时间因为课题需要使用了一段时间TensorFlow,感觉这种框架很有意思,除了可以搭建复杂的神经网络,也可以优化其他自己需要的计算模型,所以一直想自己学习一下写一个类似的图计算框架.前几天组会开完 ...
- tensorflow学习笔记(1)-基本语法和前向传播
tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程. 图中的constant是个常量 计 ...
- [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上)
[源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 目录 [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 0x00 摘要 0x01 总体逻辑 0x02 废弃 ...
- [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下)
[源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 目录 [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 0x00 摘要 0x01 前文回顾 0x02 Te ...
随机推荐
- kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现实时增量同步
1.之前kettle cdc mysql的时候使用的方案是canal+kafka+kettle,今天我们一起学习下使用kettle的插件Debezium直接cdc mysql. 注:CDC (Chan ...
- ecnuoj 5042 龟速飞行棋
5042. 龟速飞行棋 题目链接:5042. 龟速飞行棋 赛中没过,赛后补题时由于题解有些抽象,自己写个题解. 可以发现每次转移的结果只跟后面两个点的胜负状态有关. 不妨设 \(f_{u,a,b}\) ...
- 【Vyos-开源篇-1】- VMware 安装 VyOS 虚拟机
文章说明:使用VMware ESXi和VMware Workstation安装vyos软路由. 一.项目准备 1.1.VMware ESXi 我家里的是一台8核心,20G内存,2T的N5105工控机, ...
- 如何在Spring Boot框架下实现高效的Excel服务端导入导出?
前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...
- 使用AWS SageMaker进行机器学习项目
使用AWS SageMaker进行机器学习项目 本文主要介绍如何使用AWS SageMaker进行机器学习项目. 1. 题目 使用的题目为阿里天池的"工业蒸汽量预测",题目地址为: ...
- 一些自托管(self hosted)服务的使用笔记
opengrok oracle的opengrok是一个项目代码查找工具,自建索引,类似工具有source insight 官方已经提供好了docker镜像,傻瓜式安装.不过增加新的项目源码时需要手动更 ...
- 嵌入式ARM端测试手册——全志T3+Logos FPGA评估板(下)
前 言 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 64bit Linux开发环境:Ubuntu18.04.4 64bit 虚拟机:VMwa ...
- FLUTTER 中 Isolate 的一个例子.
isolate 起因 最近看了一点isolate的东西, 自己写了一个例子. 普通的的 consummer-producer例子是只有前后两端的,实际上,会把前后两端再进行包装. 我这里这个例子,是把 ...
- 量子算法抛转(以及Oracle函数初步)
接下来要接触量子算法了,我们会看到怎么利用量子并行机制和干涉原理.干涉在算法对结果进行测量求值时举足轻重. Deutsch-Jozsa 算法 DJ算法是量子算法的入门算法,就像编程界的"He ...
- Java 数据类型的包装数据类型
什么是包装数据类型 Java是一个面向对象的编程语言,但基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型. 集合框架里面需要存储对象,不能存储基本数据类型,所以需要存储包装 ...