美文网首页Machine Learning & Recommendation & NLP & DL
机器学习100天-Day6Tensorflow新手教程1

机器学习100天-Day6Tensorflow新手教程1

作者: 我的昵称违规了 | 来源:发表于2019-02-28 16:51 被阅读0次

github上的一个比较有意思的tensorflow教程,一共四大块:热身、基础、基础机器学习、基础神经网络。打算翻译一下搬运过来。Tensorflow这部分坑比较多,尤其是安装。

地址:https://github.com/osforscience/TensorFlow-Course#id7

安装分割线
目前(2018年12月)Tensorflow支持的好像只有3.6以下,GPU版本的需要安装CUDA和CUNN,这两个要在英伟达官网上搜索对应的版本号,我一直没有安装成功,现在只是使用CPU版本对付着用。

https://blog.csdn.net/ygjustgo/article/details/78883981
https://alanlee.fun/2016/12/01/installing-tensorflow/
https://blog.csdn.net/yuejisuo1948/article/details/81043962
这几个博客可以看一下。

安装完成后就进入学习了。

热身环节

目标:实现一个Hello World

原文中使用事件文档记录(event files)记录输出结果,但是我试了一下,输出的记录无法打开,会导致文件夹强行关闭,所以用处不大就注释掉了。

因为使用的是CPU进行处理,在运行的时候会报一个警告,所以在第二行增加了这句话。

2018-12-19 18:55:00.984369: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

这仅仅是一个开头,但是我们可以看到Tensorflow的主要结构。变量->会话->结束会话。

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

welcome=tf.constant('Welcome to Tensorflow world')

with tf.Session() as sess:
    print('output: ',sess.run(welcome))

sess.close()

基础

基本数学操作

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# tf.app.flags.DEFINE_string(

#     'log_dir', os.path.dirname(os.path.abspath(__file__)) + '/logs',
#     'Directory where event logs are written to.'
# )
#
# FLAGS = tf.app.flags.FLAGS

'''
tf的执行了一个特定的操作,输出的将是一个tensor(张量)
属性name定义能够更好地可视化
'''
a = tf.constant(5.0, name='a')
b = tf.constant(10.0, name='b')

x = tf.add(a, b, name='add')
y = tf.div(a, b, name='divide')

'''
session会话,是运行操作的环境,运行如下
'''
with tf.Session() as sess:
    # writer = tf.summary.FileWriter(os.path.expanduser(FLAGS.log_dir), sess.graph)
    print('output', sess.run([a, b, x, y]))
# writer.close()
sess.close()

对tensorflow变量的介绍,生成和初始化。定义变量很重要,因为变量控制参数。没有参数的话,训练、更新、保存、恢复以及其他操作都不能实现。在tensorflow中定义变量是仅仅是有确定大小和类型的张量(tensor)。张量必须使用数值初始化成为有效的。

import tensorflow as tf
from tensorflow.python.framework import ops

生成变量

对于变量的生成,使用tf.Variable()。当我们定义变量时,就是传入一个张量和它的数值进入到图(graph)中。
A变量张量有一个数值传入途中
通过使用tf.assign,一个初始化设置变量的初始数值

weights = tf.Variable(tf.random_normal([2, 3], stddev=0.1), name='weights')
biases = tf.Variable(tf.zeros([3]), name='biases')
custom_variable = tf.Variable(tf.zeros([3]), name="custom")
# 获取所有变量的张量并存储在一个list中
all_variables_list = ops.get_collection(ops.GraphKeys.GLOBAL_VARIABLES)

变量的初始化

必须在模型其他操作前运行初始化变量。这是自然的了,如果不进行变量初始化,其他操作无法进行。变量能够全局初始化、指定初始化或从其他变量中初始化。这里会对不同的操作进行比较,注意三种变量初始化时使用函数的不同。

# 初始化特殊变量,使用tf.variables_initializer(),可以命令tensorflow仅仅初始化一个特定的变量
# 需要注意的是custom initialization并不意味着不需要初始化其他变量。所有要使用到的变量都必须初始化或从已保存的便两种修改
all_variables_list = [weights, custom_variable]
init_custom_op = tf.variables_initializer(var_list=all_variables_list)
# 全局变量初始化,使用tf.global_variables_initializer(),所有变量能够一次性初始化,这一操作必须在模型建构完成后进行
# 两种初始化的方法
init_all_op = tf.global_variables_initializer()
init_all_op = tf.variables_initializer(var_list=all_variables_list)
# 使用其他已有变量进行初始化,使用initialized_value(),使用之前已经定义的变量数值初始化
WeightsNew = tf.Variable(weights.initialized_value(), name='WeightsNew')
init_WeightsNew_op = tf.variables_initializer(var_list=[WeightsNew])

运行会话Session

with tf.Session() as sess:
 sess.run(init_all_op)
 sess.run(init_custom_op)
 sess.run(init_WeightsNew_op)![image.png](https://img.haomeiwen.com/i14340919/a88c157b053f0925.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

相关文章

网友评论

    本文标题:机器学习100天-Day6Tensorflow新手教程1

    本文链接:https://www.haomeiwen.com/subject/ggkkuqtx.html