1. 图的初始化
一般是这样写:
x = tf.placeholder(tf.float32,shape=[None,2])
y_ = tf.placeholder(tf.float32,shape=[None,1])
在sklearn中y标签一般是是一维数组,是在TensorFlow中y_被定义为[None,1],也就是不限长度的一维数组集合,你在用numpy创造数据集时就要改动一下数组形状,可以这样: reshape((-1,1)),-1 表示不限长。
2. 尽量用项目方法
│ __init__.py
│ config.py
│ tf3.py
不要在一个文件里写所有的东西,尽量分开在一个包里,各司其职,配置的参数可以写在config.py里,用 from config import * 导入。
3. 简化版的二层神经网络
import tensorflow as tf
import numpy as np
from config import *
#1 数据集和图
X = np.random.random((32,2))
Y = np.array([int(sum(x)>1) for x in X]).reshape((-1,1))
x = tf.placeholder(tf.float32,shape=[None,2])
y_ = tf.placeholder(tf.float32,shape=[None,1])
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
#2 定义损失函数和反向传播
loss = tf.reduce_mean(tf.square(y-y_))
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
#3 生成会话
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
for i in range(STEPS):
sess.run(train_step,feed_dict={x:X,y_:Y})
print(sess.run(w1))
神经网络算法都很慢,一般是过算过几十轮就输出一组东西表示我还活着没有死机,可是这种检测方法让代码更难懂了,所以在学习TensorFlow框架事时不如不要。
网友评论