作家
登录

从零开始使用TensorFlow建立简单的逻辑回归模型

作者: 来源: 2017-06-29 13:02:29 阅读 我要评论

----------特别提示----------

如不雅你是应用 GPU 版 TensorFlow 的话,并且你想在显卡高占用率的情况下(比如玩游戏)练习模型,那你要留意在初始化 Session 的时刻为其分派固定命量的显存,不然可能会在开端练习的时刻直接报错退出:

optimizer = tf.train.GradientDescentOptimizer(0.001)train = optimizer.minimize(loss)
2017-06-27 20:39:21.955486: E c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\stream_executor\cuda\cuda_blas.cc:365] failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILEDTraceback (most recent call last):  File "C:\Users\DYZ\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1139, in _do_call    return fn(*args)  File "C:\Users\DYZ\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1121, in _run_fn    status, run_metadata)  File "C:\Users\DYZ\Anaconda3\envs\tensorflow\lib\contextlib.py", line 66, in __exit__    next(self.gen)  File "C:\Users\DYZ\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status    pywrap_tensorflow.TF_GetCode(status))tensorflow.python.framework.errors_impl.InternalError: Blas GEMV launch failed:  m=2, n=100         [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device="/job:localhost/replica:0/task:0/gpu:0"](_arg_Placeholder_0_0/_3, Reshape)]]

这时你须要用下面的办法创建 Session:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

http://s2.51cto.com/wyfs02/M01/9A/53/wKioL1lUbrTikaBFAAHSU7Yg02k376.png-wh_600x-s_3620781526.png

图形化表示结不雅

这里的0.333就是占你总显存的份额。

----------End 特别提示----------

下面就是用我们的数据集来对模型进行练习了:

feed_dict = {X: train_X, y: train_y}for step in range(1000000):    sess.run(train, {X: train_X, y: train_y})    if step % 100 == 0:        print(step, sess.run(W).flatten(), sess.run(b).flatten())

起首讲要传入的数据存放到一个变量中,在练习模型时传入 sess.run();我们进行 10000 次练习,每隔 100
次输出一次当前的目标参数 W, b。

到这里,练习代码的部分就完成了,你可以应用你本身的 python 敕令来运行了。如不雅钠揭捉?格按照膳绫擎的代码做了,不出现缺点,你如今应当可以看到控制台里已经开端赓续输出练习状况了:

pandas是一个数据处理相干的包,可以对数据集进行攫取和其他各类操作;matplotlib可以用来把我们的数据集绘成图表展示出来。

当练习停止后,你可以获得一个 W,和一个 b,如许我们可以将数据集和拟合的结不雅经由过程图表直不雅地展示出来。

就在写作的过程中,我用膳绫擎的代码练习出了一个结不雅:

我们将其直接写入代码,即:

w = [0.12888144, 0.12310864]b = -15.47322273

下面我们先将数据集表示在图表上(x1为横轴,x2为纵轴):

x1 = train_data[:, 0]x2 = train_data[:, 1]y = train_data[:, -1:]for x1p, x2p, yp in zip(x1, x2, y):    if yp == 0:        plt.scatter(x1p, x2p, marker='x', c='r')    else:        plt.scatter(x1p, x2p, marker='o', c='g')

个中,我们用 红色的x 代表 没有被登科,用 绿色的o 代表 被登科。

其次我们将练习得出的决定计划界线 XW + b = 0 表示到图表上:

这里他们的类型为 Variable(变量),意味着这两个变量将在练习迭代的过程中赓续地变更,最终取得我们期望的值。可以看到,我们将 W 的初始值设为了 feature_num 维的0向量,将 b 初始值设为了 -0.9(随便设的,不要介怀😶)

# 根据参数获得直线x = np.linspace(20, 100, 10)y = []for i in x:    y.append((i * -w[1] - b) / w[0])    plt.plot(x, y)plt.show()

此时,如不雅你的代码没错的话,再次运行,你将获得如下结不雅:

可以看到,我们经由过程练习得出的参数划出一条直线,异常合适地将两种不合的数据样例区分开来。

到此,一个完全的简单的逻辑回归模型就实现完毕了,欲望经由过程这篇文┞仿,能让各位看官对在 TensorFlow 中机械进修模型的实现有一个初步的懂得。本人也在初步进修傍边,如有欠妥之处迎接在评论区拍砖,在实现以上代码的过程中如不雅碰到什愦问题也请在评论区随便开仗。

# 攫取数据文件df = pd.read_csv("ex2data1.txt", header=None)train_data = http://mdsa.51cto.com/art/201706/df.values

【编辑推荐】

  1. 谁说数据少就不克不及用深度进修?这锅俺不背!
  2. 深度进修成了前端开辟神器:根据UI设计图主动生成代码
  3. 一文读懂监督进修、无监督进修、半监督进修、强化进修这四种深度进修方法
  4. 深度 | 详解首个体系性测试实际深度进修体系的白箱框架DeepXplore
  5. 我的深度进修开辟情况详解:TensorFlow + Docker + PyCharm等,你的呢?

      推荐阅读

      图说Java —— 理解Java机制最受欢迎的8幅图

    欲望本文能帮你回想你已经知道的那些常识。如不雅图片讲解的不敷清楚,你可能须要浏览具体的文┞仿或者进行搜刮。1. String对象弗成改变的特点(详情请点击膳绫擎的标题查看)String s = "ab>>>详细阅读


    本文标题:从零开始使用TensorFlow建立简单的逻辑回归模型

    地址:http://www.17bianji.com/lsqh/35964.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)