Google前一段时间推出了TF2.0,去官网看了一下新的语法,感觉发现了新的世界,直接感受就是逻辑性强,代码简洁,容易理解,至于其他的特性我们可以以后慢慢发掘,我们先去尝试一下TF2.0,感受一下时代的潮流吧。
首先我们下载好anaconda,然后打开conda的命令行,我们为TF2.0创建虚拟环境。
运行第一行的命令为TF创建一个环境,最后结果应该为下图所示:
安装完环境之后我们就可以安装TF2.0了。
我们先进入我们创建的虚拟环境,然后安装TF2.0
最后完成安装:
在pycharm中切换为我们新创建的环境,观察是否成功:
选择ok,这样我们就切换到了我们新创建的环境中了
我们运行一个示例程序检查我们的环境是否成功:
这样就是成功的了。
如果你出现了类似的警告:
应该是Numpy的版本过高了,你可以尝试下面的操作将NUMPY的版本降低:
我们在尝试一次:
没有了警告,完美!
好了,我们创建好了环境,就可以去实现一下深度学习中的Hello,world-MNIST手写识别了。
为了更好的与TF1.x进行比较和理解我们下面代码的含义,建议大家先简单浏览一下这篇文章:
Ysj的小迷弟:手把手教你完成卷积神经网络的“HELLO WORLD” - MNIST数字识别zhuanlan.zhihu.com我们现在用TF2.0,搭建一个与该神经网络框架完全一样的神经网络,代码如下:
try:
import tensorflow.python as tf
except:
import tensorflow as tf
ds = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) =ds.load_data()
x_test,x_train = x_test.reshape((10000,28,28,1)),x_train.reshape(60000,28,28,1)
x_test,x_train = x_test/255.0,x_train/255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(20,(5,5),padding="SAME",activation="relu"),
tf.keras.layers.MaxPool2D(2,2,padding="SAME"),
tf.keras.layers.Conv2D(40,(5,5),padding="SAME",activation="relu"),
tf.keras.layers.MaxPool2D(2, 2,padding="SAME"),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512,activation="relu"),
tf.keras.layers.Dense(10,activation="softmax")
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train,y_train,epochs=5)
test_loss, test_acc = model.evaluate(x_test, y_test)
print(test_loss)
简单解释一下第一行的意思,因为我们的kersa在tensorflow的python目录下,没有第一行的引入就会无法正常的提示代码,写起来很不舒服,所以用这个是为了提高我们编写代码的效率,小伙伴们可以尝试一下只用import tensorflow as tf,会知道我这么写的原因。
至于卷积神经网络的结构和我上一篇文章中的一摸一样。大家可以看的出来我们新的TF的代码无论是在逻辑性还是代码可读性上都有了巨大的提高,不需要我给出注释大家也可以明白基本的意思
有兴趣的小伙伴可以尝试着去实现一下这个代码,很简单,也非常的简洁,抓紧时间感受一下TF2.0的优势吧,我们下篇文章再见!