一、建立一个简单的神经网络
import tensorflow as tf
import numpy as np
#定义一个添加层的函数
def add_layer(inputs,in_size,out_size,activation_function=None): #要添加的功能 None时为线性函数
Weights = tf.Variable(tf.random_normal([in_size,out_size])) #定义矩阵 大写开头/ 随机变量要比全部为0好很多
biases = tf.Variable(tf.zeros([1,out_size])+0.1) #定义biases 类似列表的东西/初始值推荐不为0
Wx_plus_b = tf.matmul(inputs,Weights) + biases #定义操作 预测出来的值 还未使用激活函数
if activation_function is None:
output = Wx_plus_b
else:
output = activation_funcion(Wx_plus_b)
return outputs
#建造神经网络
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 格式和x_data一样
y_data = np.square(x_data) - 0.5 + noise
###
输入层 输入多少个data就有多少个神经元 1个神经元
隐藏层 1层 10个神经元
输出层 1个属性就只有1个神经元
###
xs = tf.placeholder(tf.float32,[None,1]) #None表示无论给多少个例子都可以
ys = tf.placeholder(tf.float32,[None,1])
#hidden layer1
l1 = add_layer(xs,1,10,activation_function=tf.nn.relu) #输入的数据;x_data的size;隐藏层的神经元;激活函数
#输出层
prediction = add_layer(l1,10,1,activation_function = None) #上一层的数据l1;上一层的神经元个数10;输出层的数据1
#计算loss
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1])) #tf.reduce_sum()求和 tf.reduce_mean()求平均
#设置训练
train_step = tf.train.GradientDescentOptimizer.minimize(0.1,loss) #要给定学习率;使用优化器来对loss进行最小化
#对所有变量进行初始化
init = tf.global_variables_initializer()
#定义session
sess = tf.Session()
#上面的都还没开始运算 直到run
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}))
报错
【报错】并且在pycharm运行无法import tensorflow
在pycharm的setting里面选择interpreter 然后点旁边的加号 在里面搜TensorFlow 直接点安装就阔以了【感觉很邪教啊囧】
看网上说添加TensorFlow的python.exe 但是木有找到 而且为啥我的anaconda下面的envs是空的 怎么肥似
然后依旧是说minimize()不对 是参数少写了啥吗0.0 啊 智商不够用好难过QWQ
_(:з」∠)_端午节先回家看世界杯了 等放完假回来再瞅瞅
2018.6.21 最后发现是loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))里的ys-prediction打成了 y_data-ys 窒息了
二、 可视化