1、环境准备
我目前是在笔记本上安装的,win7系统,目的是用来学习用。
1.0 conda环境准备
安装conda目的是可以管理多个python环境。根据如下参考文章从清华源下载了miniconda版本。
按照参考安装。
安装好后就可以在cmd中使用conda指令了,cmd打开方式,windows键+R键,弹出输入框,输入cmd就进入了。也可以直接在windows搜索cmd点击运行。
下面学习到一些cmd conda指令:
1、查看conda环境:conda env list
2、新建conda环境(env_name就是创建的环境名,可以自定义):conda create -n env_name
3、激活conda环境(ubuntu与Macos 将conda 替换为source):conda activate env_name
4、退出conda环境:conda deactivate
5、安装和卸载python包:conda install numpy # conda uninstall numpy
6、查看已安装python列表:conda list -n env_name
1.1 TF2.0 CPU版本安装
1.1.0 新建TF2.0 CPU环境(使用conda 新建环境指令 python==3.7表示在新建环境时同时python3.7)
conda create -n TF_2C python=3.7
当弹出 :Proceed ([y]/n)? 输入y回车
完成后就可以进入此环境
1.1.1 进入TF_2C环境
conda activate TF_2C
进入后我们就可以发现:(TF_2C)在之前路径前面,表示进入了这个环境。使用conda deactivate可以退出。
更新pip,没更新pip 有可能后面安装TensorFlow不成功,所以保证能使用最新的pip。
1.1.2 安装TF2.0 CPU版本(后面的 -i 表示从国内清华源下载,速度比默认源快很多)
pip install tensorflow==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
如果网不好的,多执行几次。然后过一会就安装好啦。
1.1.3 pycharm中配置tensorflow
按如下流程添加刚才配置的TensorFlow环境,我的是在D:\ProgramData\Anaconda3\envs\TF_2C\python.exe位置
点击Apply 和OK,环境就可以用了。写入如下手写数字识别代码体验下
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, optimizers, datasets
(x, y), (x_val, y_val) = datasets.mnist.load_data()
x = tf.convert_to_tensor(x, dtype=tf.float32) / 255.
y = tf.convert_to_tensor(y, dtype=tf.int32)
y = tf.one_hot(y, depth=10)
print(x.shape, y.shape)
train_dataset = tf.data.Dataset.from_tensor_slices((x, y))
train_dataset = train_dataset.batch(200)
model = keras.Sequential([
layers.Dense(512, activation='relu'),
layers.Dense(256, activation='relu'),
layers.Dense(10)])
optimizer = optimizers.SGD(learning_rate=0.001)
def train_epoch(epoch):
# Step4.loop
for step, (x, y) in enumerate(train_dataset):
with tf.GradientTape() as tape:
# [b, 28, 28] => [b, 784]
x = tf.reshape(x, (-1, 28*28))
# Step1. compute output
# [b, 784] => [b, 10]
out = model(x)
# Step2. compute loss
loss = tf.reduce_sum(tf.square(out - y)) / x.shape[0]
# Step3. optimize and update w1, w2, w3, b1, b2, b3
grads = tape.gradient(loss, model.trainable_variables)
# w' = w - lr * grad
optimizer.apply_gradients(zip(grads, model.trainable_variables))
if step % 100 == 0:
print(epoch, step, 'loss:', loss.numpy())
def train():
for epoch in range(30):
train_epoch(epoch)
if __name__ == '__main__':
train()
结果: