tensorflow学习(一)
今天开始学习tensorflow框架,从极客学院下载了官方中文教程(15年翻译的),第一天开始学习第一章ng基本流程和原理,作为前奏。然后写了代码,验证一下,准确率确实非常高,非常好用。把代码上传,作为以后备用。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import tensorflow as tf 2 import numpy as np 3 import math 4 5 class Model: 6 def __init__(self,w = np.empty(None),b = None): 7 self.b = b 8 self.w = w 9 10 def predict(self, input): 11 return np.dot(input,self.w) + self.b 12 13 data = np.float32(np.random.rand(1000,2)) 14 label = np.dot(data,np.array([[0.100],[0.200]])) + 0.3 15 m,n = data.shape 16 17 num_train = int(m * 0.6) 18 num_validation = int(m * 0.2) 19 num_test = int(m * 0.2) 20 21 data_train = data[:num_train,:] 22 data_validation = data[num_train:(num_train+num_validation),:] 23 data_test = data[(num_train+num_validation):,:] 24 25 label_train = label[:num_train,:] 26 label_validation = label[num_train:(num_train+num_validation),:] 27 label_test = label[(num_train+num_validation):,:] 28 29 w = tf.Variable(tf.random_uniform([2,1],-1.0,1.0)) 30 b = tf.Variable(tf.zeros([1])) 31 32 y_train = tf.matmul(data_train,w) + b 33 loss = tf.reduce_mean(tf.square(label_train - y_train)) 34 ''' 35 bestModel = Model() 36 minRMSE = (1 << 31) -1 37 alphas = [0.1,0.3,0.5]; 38 iters = [100,150,200,250]; 39 for iter in iters: 40 for alpha in alphas: 41 optimizer = tf.train.GradientDescentOptimizer(alpha) 42 train = optimizer.minimize(loss) 43 init_state = tf.global_variables_initializer() 44 with tf.Session() as sess: 45 sess.run(init_state) 46 for step in range(0,iter): 47 sess.run(train) 48 model = Model(sess.run(w),sess.run(b)) 49 p = model.predict(data_validation) 50 rmse = np.sqrt(np.mean(np.square(label_validation - p))) 51 if rmse < minRMSE: 52 minRMSE = rmse 53 bestModel = model 54 np.save("E:\\Python\\models\\weights.npy",bestModel.w) 55 np.save("E:\\Python\\models\\b.npy",bestModel.b) 56 ''' 57 58 weights = np.load("E:\\Python\\models\\weights.npy") 59 b = np.load("E:\\Python\\models\\b.npy") 60 61 model = Model(weights,b) 62 predicts = model.predict(data_test) 63 print(predicts) 64 print(label_test) 65 print(label_test - predicts)