最近一直在学习机器学习,看了一段时间的机器学习理论后,买了一本tensorflow实战的书,开始实战:
tensorflow的基本单位是tensor即张量,就是矩阵,可以是多维的矩阵,具体一些概念不在这里解释
尝试使用tensorflow去解决的第一个问题是给一个数,如果这个数是3的倍数,那它属于第一类,如果是5的倍数属于第二类,最开始的想法是用regression乱train一发,结果坏掉了,不能work
这里是产生数据的代码,每个数字产生对应二进制的表示作为网络的输入,如果%3==0则label为[1 0],如果能%5==0则label为[0 1],如果%15==0则label为[1 1],使用这些数据进行regression
def int2vector(i):
ele=[]
dim = 10
while (dim != 0):
dim = dim - 1
ele.append(i % 2)
i = i // 2
return ele
def getLabel(x):
ele = []
if x % 3 == 0:
ele.append(1)
else:
ele.append(0)
if x % 5 == 0:
ele.append(1)
else:
ele.append(0)
return ele
def getTranData(x,y):
for i in range(10,900):
y.append(getLabel(i))
x.append(int2vector(i))
训练过程:
def train():
data=[]
label=[]
getTranData(data,label)
x = tf.placeholder(tf.float32,[None,10],name='x-input')
y_ = tf.placeholder(tf.float32,[None,2],name='y-output')
weight1 = tf.Variable(tf.random_normal([10,1000],stddev=0.1) )
bias1 = tf.Variable(tf.zeros([1000]))
weight2 = tf.Variable(tf.random_normal([1000, 2], stddev=0.1))
bias2 = tf.Variable(tf.zeros([2]))
hide = tf.nn.relu( tf.matmul( x,weight1 ) + bias1 )
y = tf.matmul(hide,weight2)+bias2
global_step