试了很久 最有效的:
见原博客
https://blog.csdn.net/xq_nbu/article/details/80983969
参考这个就能成功
这里面用的cmd,我用的ana蟒蛇,必须要activate tensorflow环境 否则不会有tensorboard包
**
注意里面的tensorboard --logdir="C:\Users\MJY\PycharmProjects\syudy\log"是没有.exe的 这个地方原文章有坑
**
注意生成log的代码为:
writer=tf.summary.FileWriter('C:/Users/MJY/PycharmProjects/syudy/log',sess.graph)
而且看网站的图的时候千万别把anaconda的命令窗口关掉 否则就看不到了
下附神经网络建立代码:
#author MJY
#author MJY
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt#结果可视化
def add_layer(inputs, in_size, out_size, activation_function=None):
with tf.name_scope('layer'):
with tf.name_scope('weights'):
Weights=tf.Variable(tf.random_normal([out_size, in_size]),name='W')#初始化了一个insize行outsize列的权重矩阵
with tf.name_scope('biases'):
biases=tf.Variable(tf.zeros([out_size,1])+0.1)#b不建议以0初始化
with tf.name_scope('wx_plus_b'):
Wx_plus_b = tf.matmul( Weights,inputs) + biases#未激活的值
if activation_function is None:
outputs = Wx_plus_b#线性7
else:
outputs=activation_function(Wx_plus_b)
return outputs
#以上添加了一个神经层
#我终于明白了!!!!!!!!
#你这个建立的时候 w b 都是只是相对于一个样本来说的 所以不考虑m
#以下自己建造一个数据集
x_data=np.linspace(-1,1,300)[ np.newaxis,:]#-1到1这个区间 300个单位 并变列向量,即加一个维度 但每次输入好像就输入一个
noise=np.random.normal(0, 0.05, x_data.shape)#均值0 标准差0.05 xdata一样的格式 加噪点以更像真实数据
y_data=np.square(x_data)-0.5+noise
#以下建立神经网络
with tf.name_scope('inputs'):
xs=tf.placeholder(tf.float32,[1,None],name='x_input')#[None,1]即为行不定 列为一 可理解为列向量
ys=tf.placeholder(tf.float32,[1,None],name='y_input')
l1=add_layer(xs, 1, 10, activation_function=tf.nn.relu)#输入层
prediction=add_layer(l1, 10, 1, activation_function=None)#输出层
with tf.name_scope('loss'):
loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[0]))#reduce_sum 求和命令 reduce_mean求平均值 reduction_indices命令看csdn收藏夹
with tf.name_scope('train'):
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)#0.1为学习率 一般小于一
#minimize(loss)为每次需要降低loss
init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init)
writer=tf.summary.FileWriter('C:/Users/MJY/PycharmProjects/syudy/log',sess.graph)
fig=plt.figure()#生成图片框
ax=fig.add_subplot(1,1,1)#111是编号
ax.scatter(x_data,y_data)
plt.ion()
plt.show()
#这个输出就暂停了 如果想连续就plt.ion
STEP=1000
for i in range(STEP):#学习一千次
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
是根据莫凡教程P20来的 有些许改动