win10 RTX30系列显卡 安装tensorflow-gpu 1.15

win10 RTX30系列显卡 安装tensorflow-gpu 1.15

以下内容基本参考Win10 RTX30系列 安装tensorflow1.15

众所周知,RTX30系列的显卡,针对 TensorFlow1.x 很不友好,除了在Ubuntu系统中可以使用专门的那个版本外,在win10上想要使用TensorFlow1.x GPU版本几乎基本是不现实的,偶然看到上面这边博客里面分享了win10下使用GPU版 TensorFlow1.15,于是我也测试了一下,发现是可以的。

我的显卡为3060 Ti

win10 RTX30系列显卡 安装tensorflow-gpu 1.15_第1张图片

具体安装步骤如下:

1.安装cuda和cudnn,推荐使用conda安装省心,不会和系统已有的cuda及cudnn发生冲突。

conda install cudatoolkit=11.2 -c conda-forge
conda install cudnn=8.1.0 -c conda-forge

2.安装知乎大佬编译好的的tensorflow-gpu 1.15,注意numpy版本需要1.18.5

pip install tensorboard==1.15 -i https://mirrors.aliyun.com/pypi/simple
pip install numpy==1.18.5 -i https://mirrors.aliyun.com/pypi/simple
pip install "tensorflow-1.15.4+nv-cp37-cp37m-win_amd64.whl"

安装完成测试:

import tensorflow as tf
from numpy.random import RandomState

# 定义训练数据batch的大小
batch_size = 8

# 定义神经网络参数
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))

# 在shape的一个维度上使用None可以方便使用不同的batch大小
x = tf.placeholder(tf.float32, shape=(None,2), name='x-input')
y_ = tf.placeholder(tf.float32, shape=(None, 1), name='y-input')

# 前向传播
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

# 损失函数和反向传播
y = tf.sigmoid(y)
cross_entropy = -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y, 1e-10, 1.0))
                                + (1-y_)*tf.log(tf.clip_by_value(1-y, 1e-10, 1.0)))
train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy)

# 随机生成一个模拟数据集
rdm = RandomState(1)
dataset_size = 128
X = rdm.rand(dataset_size, 2)
# 定义规则来给出样本标签, x1+x2<1的样例都认为是正样例,其他为负。
Y = [[int(x1+x2 < 1)] for (x1,x2) in X]

# 创建一个会话来运行Tensorflow程序
with tf.Session() as sess:
    init_go = tf.global_variables_initializer()
    # 初始化变量
    sess.run(init_go)
    
    # 训练之前的参数
    print('parameter w1 before train: ', sess.run(w1))
    print('parameter w2 before train: ', sess.run(w2))
    
    STEPS = 1000
    for i in range(STEPS):
        # 每次迭代取batch_size个样本进行训练
        start = (i*batch_size) % dataset_size
        end = min(start+batch_size, dataset_size)
        
        # 通过训练样本训练神经网络并更新参数
        sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
        if i%1000 == 0:
            # 每隔1000步计算所有数据集上的交叉熵并输出
            total_cross_entropy = sess.run(cross_entropy, feed_dict={x: X, y_: Y})
            print('After %d training_steps, cross entropy on all data is %g'%(i,total_cross_entropy))
    
    # 训练之后的参数
    print('parameter w1 after train: ', sess.run(w1))
    print('parameter w2 after train: ', sess.run(w2))
    
print("\ntensorflow版本为{}".format(tf.__version__))

结果如下,可以看到GPU被调用起来了,撒花。

win10 RTX30系列显卡 安装tensorflow-gpu 1.15_第2张图片

你可能感兴趣的:(tensorflow,深度学习,python)