Tensorflow使用错误集锦:

错误1 :

FutureWarning: Conversion of the second argument of issubdtype from ‘float’ to ‘np.floating’ is dep

解决办法:命令行进入python文件下对numpy进行降级

错误2:

module 'tensorflow' has no attribute 'xxx'

解决办法:一般而言是由于TensorFlow新版本修改了许多函数的名字,可能的情况如下:

tf.sub()改为tf.subtract()
tf.mul()改为tf.multiply()
tf.types.float32改为tf.float32
tf.pact()改为tf.stact()
tf.initialize_all_variables()改为tf.global_variables_initializer()

 

错误3:

initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.Instructions for updating:

解决办法:initialize_all_variables已被弃用,将在2017-03-02之后删除。

所以我们把tf.initialize_all_variables()改为tf.global_variables_initializer()就可以了

 

错误4 :

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

是说你电脑cpu支持AVX(Advanced Vector Extensions),运算速度可以提升。这个警告是可以忽略的

解决办法:在开头加上下面两行代码

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

 

 


1.什么是张量(Tensor)?

张量:多重线性函数。张量同时描述N个属性,将属性写在一块,每个属性有多个自由度。

简单理解:回顾一下我们以前学过向量和矩阵,向量是一维的,矩阵是二维的,我们将张量视为这些的泛化。即rank=0时是标量,rank=1时是向量,rank=2时是矩阵,当rank>=2之后,没有名称,我们将它叫做rank N Tensor

物理角度:“在不同坐标系下都保持不变的物理量”

 

2.Constant assign

state = tf.Variable(0, name="counter")

# 创建一个op,其作用是使`state`增加1
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)

# 启动图后,变量必须先经过init op初始化
# 首先先增加一个初始化op到图中
init_op = tf.initialize_all_variables()

# 启动图
with tf.Session() as sess:
  # 运行init op
  sess.run(init_op)
  # 打印 state 的初始值
  print (sess.run(state))
  # 运行op, 更新state 并打印
  for _ in range(3):
    sess.run(update)
    print (sess.run(state))

  

3.Reduce_mean

在tensor的某一维度上求值。即沿着张量不同的数轴进行计算平均值

 

求最大值tf.reduce_max(input_tensor, reduction_indices=None, keep_dims=False, name=None)

求平均值tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)

参数:

 

input_tensor:待求值的tensor,,被计算的张量,确保为数字类型。

reduction_indices或者axis: 方向数轴,如果没有指明,默认是所有数轴都减小为1。

keep_dims: 如果定义true, 则保留维数,但数量个数为0.

name: 操作过程的名称。

返回值:降低维数的平均值。

 

tf.reduce_mean(x)表示计算全局平均值;
tf.reduce_mean(x, axis=0)表示计算y轴平均值;
tf.reduce_mean(x, axis=1)表示计算x轴平均值;

4.定义图变量的两种方法Variable

  • tf.variable

python从入门到放弃之Tensorflow(一)

 

在tensorflow中,创建的这些对象,必须要经过初始化才能使用。最简单直接的初始化所有变量的方法:

init = tf.global_variables_initializer() 
with tf.Session() as sess:
sess.run(init)

 示例如下:

import tensorflow as tf;    
import numpy as np;    
import matplotlib.pyplot as plt;    
    
a1 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a1')  
a2 = tf.Variable(tf.constant(1), name='a2')  
a3 = tf.Variable(tf.ones(shape=[2,3]), name='a3')  
  
with tf.Session() as sess:  
    sess.run(tf.initialize_all_variables())  
    print sess.run(a1)  
    print sess.run(a2)  
    print sess.run(a3) 

  python从入门到放弃之Tensorflow(一)

 

 

  • tf.get_variable

import tensorflow as tf
init = tf.constant_initializer([5])
x = tf.get_variable('x', shape=[1], initializer=init)
sess = tf.InteractiveSession()
sess.run(x.initializer)
sess.run(x

 

运行会话

#coding=utf-8
import numpy as np
from numpy import *
# import matplotlib.pyplot as plt
import tensorflow as tf
# 创建一个变量,初始为标量0
state = tf.Variable(0, name="counter")
# 创建一个op,其作用是使`state`增加1
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
# 启动图后,变量必须先经过init op初始化
# 首先先增加一个初始化op到图中
init_op = tf.initialize_all_variables()
# 启动图
with tf.Session() as sess:
  # 运行init op
  sess.run(init_op)
  # 打印 state 的初始值
  print (sess.run(state))
  # 运行op, 更新state 并打印
  for _ in range(3):
    sess.run(update)
    print (sess.run(state))

  

输出:

python从入门到放弃之Tensorflow(一)

 

 

 

 5.placeholder以及数据训练过程

python从入门到放弃之Tensorflow(一)

python从入门到放弃之Tensorflow(一)

 

 python从入门到放弃之Tensorflow(一)

python从入门到放弃之Tensorflow(一)

tf.GradientDescentOptimizer(learning_rate).minimize(Loss)

 python从入门到放弃之Tensorflow(一)python从入门到放弃之Tensorflow(一)

 

 

x、y组成的实际数据输入再提供给输入

python从入门到放弃之Tensorflow(一)