TensorFlow和pytorch是目前两个比较受欢迎的深度学习框架,二者都被广泛地应用在业界和学术领域。本文对二者进行简单的梳理对比。
TensorFlow 由Google开发,于2015年发布。是静态框架,它需要创建图计算,并且创建之后不可更改,通过session会话进行数据输入和计算。
pytorch 由Facebook开发,于2017年发布。是动态框架,和python的逻辑是一样的,要对变量做任何操作都是灵活的。整个流程:计算图、传入变量数据、求梯度、参数更新等操作,对于编程者都有很强的可读性,代码相对于TensorFlow可读性更强。
以下是用TensorFlow实现CNN的代码:
import tensorflow as tf
'''
假设输入是32*32的大小,五分类任务
'''
# ===定义输入输出===
my_input = tf.placeholder(tf.float32, [None, 32*32])
my_output = tf.placeholder(tf.int32, [None, 5])
# ===定义网络结构===
conv1 = tf.layers.conv2d(inputs=my_input, filter=16, kernel_size=[3,3],strides=1, padding='same', activation=tf.nn.relu)
pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2,2], strides=2)
conv2 = tf.layers