1 tensorflow可视化
1.1 PlayGround学习
用于教学目的的简单神经网络的在线演示,可以在浏览器中训练神经网络
通过训练可以看到,两个特征输入,两层隐藏层,最后可以较好地把两类数据正确分类
1.2 tf学习
tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
参数:
a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。
b: 一个类型跟张量a相同的张量。
transpose_a: 如果为真, a则在进行乘法计算前进行转置。
transpose_b: 如果为真, b则在进行乘法计算前进行转置。
adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。
adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。
a_is_sparse: 如果为真, a会被处理为稀疏矩阵。
b_is_sparse: 如果为真, b会被处理为稀疏矩阵。
name: 操作的名字(可选参数)
返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。
tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。
reduce_mean(input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None)
第一个参数input_tensor: 输入的待降维的tensor;
第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;
第四个参数name: 操作的名称;
第五个参数 reduction_indices:在以前版本中用来指定轴
构建一个简单的神经网络
import tensorflow as tf
import numpy as np
#构造数据
#取-1到1的等差数列且将一维数组转为二维数组
x_data = np.linspace(-1,1,300)[:,np.newaxis]
#加入均值为0,方差为0.05的噪声
noise= np.random.normal(0,0.05,x_data.shape)
#y=x^2-0.5+噪声
y_data = np.square(x_data)-0.5+noise
#定义占位符 类型+形状 [None,1]表示 任意行,一列
xs = tf.placeholder(tf.float32,[None,1])
ys = tf.placeholder(tf.float32,[None,1])
#构建网络模型
def add_layer(inputs,in_size,out_size,activation_function=None):
#构建权重:in_sizexout_size大小的矩阵
weights = tf.Variable(tf.random_normal([in_size,out_size]))
print('weight_shape',weights.shape)
#构建偏置:1xout_size大小的矩阵
bias = tf.Variable(tf.random_normal([1,out_size])+0.1)
print('bias_shape', bias.shape)
#矩阵相乘
Wx_plus_b = tf.matmul(inputs,weights)+bias
print('Wx_plus_b', bias.shape)
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs
#构建隐藏层,输入层一个神经元,隐藏层20个神经元
h1 = add_layer(xs,1,20,activation_function=tf.nn.relu)
#构建输出层,输入层20个神经元,输出层是1个神经元
prediction = add_layer(h1,20,1,activation_function=None)
#构建损失函数
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#训练模型
init = tf.global_variables_initializer()#初始化所有变量
sess = tf.Session()
sess.run(init)
#训练1000次
for i in range(1000):
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i % 50 == 0 :
print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
1.3 tensorboard
在生成的events文件的上一级目录也就是logs那级打开shell
D:\opencvfile\yolo_tensorflow-master> tensorboard --logdir=logs