TensorFlow学习笔记(二十一) tensorflow机器学习模型
来源:互联网 发布:淘宝seo公式 编辑:程序博客网 时间:2024/05/17 21:58
直接给出一般的通用编程模型,并通过3个例子来看看使用情况。
#tensorflow编程模型import tensorflow as tf# define the training loop operationsdef inference(X): # compute inference model over data X and return the result return def loss(X, Y): # compute loss over training data X and expected values Y return def inputs(): # read/generate input training data X and expected outputs Y return def train(total_loss): # train / adjust model parameters according to computed total loss return def evaluate(sess, X, Y): # evaluate the resulting trained model return # Launch the graph in a session, setup boilerplatewith tf.Session() as sess: tf.global_variables_initializer().run() #tf.initialize_all_variables().run() X, Y = inputs() total_loss = loss(X, Y) train_op = train(total_loss) coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord) # actual training loop training_steps = 1000 for step in range(training_steps): sess.run([train_op]) # for debugging and learning purposes, see how the loss gets decremented thru training steps if step % 10 == 0: print( "loss: ", sess.run([total_loss])) evaluate(sess, X, Y) coord.request_stop() coord.join(threads) sess.close()
1. 线性回归,用来预测体重年龄与 血脂含量的关系
#Linear Regressionimport tensorflow as tf# Explicitly create a Graph objectW = tf.Variable(tf.zeros([2, 1]), name="weights")b = tf.Variable(0., name="bias")# define the training loop operationsdef inference(X): # compute inference model over data X and return the result return tf.matmul(X,W) + b #矩阵相乘def loss(X, Y): # compute loss over training data X and expected values Y Y_predicted = inference(X) return tf.reduce_sum(tf.squared_difference(Y,Y_predicted))def inputs(): # read/generate input training data X and expected outputs Y weight_age = [[84, 46], [73, 20], [65, 52], [70, 30], [76, 57], [69, 25], [63, 28], [72, 36],[79,51],[75,50],[82,34],[59,46],[67,23],[85,37],[55,40],[63,30]] blood_fat_content = [354, 190, 405, 263, 451, 302, 288, 385, 402, 365, 209, 290, 346, 254, 395,434,220,374,308,220,311,181,274,303,244] return tf.to_float(weight_age), tf.to_float(blood_fat_content) #with GradientDescentOptimizerdef train(total_loss): learning_rate = 0.0000001 return tf.train.GradientDescentOptimizer(learning_rate).minimize(total_loss) def evaluate(sess, X, Y): # evaluate the resulting trained model print(sess.run(inference([[80., 25.]]))) # ~ 303 print(sess.run(inference([[65., 25.]]))) with tf.Session() as sess: tf.global_variables_initializer().run() X, Y = inputs() print(X) print(Y) total_loss = loss(X, Y) train_op = train(total_loss) coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord) #tf.train.start_queue_runners 这个函数将会启动输入管道的线程,填充样本到队列中, #以便出队操作可以从队列中拿到样本。这种情况下最好配合使用一个tf.train.Coordinator,这样可以在发生错误的情况下正确地关闭这些线程。 #actual training loop training_steps = 1000 for step in range(training_steps): sess.run([train_op]) #for debugging and learning purposes, see how the loss gets decremented thru training steps if step % 10 == 0: print("loss: ", sess.run([total_loss])) evaluate(sess, X, Y) coord.request_stop() coord.join(threads) sess.close()
2. 使用逻辑回归LR,本地读取文件数据,然后预测泰坦尼克生存者
import tensorflow as tf# same params and variables initialization as log reg.W = tf.Variable(tf.zeros([5, 1]), name="weights")b = tf.Variable(0., name="bias")# former inference is now used for combining inputsdef combine_inputs(X): return tf.matmul(X, W) + b# new inferred value is the sigmoid applied to the formerdef inference(X): return tf.sigmoid(combine_inputs(X)) #逻辑回归 LR#calculating cross entropy 交叉熵def loss(X, Y): return tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=combine_inputs(X), logits=Y))def read_csv(batch_size, file_name, record_defaults): #filename_queue = tf.train.string_input_producer([os.path.dirname(__file__) + "/" + file_name]) filename_queue = tf.train.string_input_producer(["E:\\testData\\taitannike\\" + file_name]) reader = tf.TextLineReader(skip_header_lines=1) key, value = reader.read(filename_queue) # decode_csv will convert a Tensor from type string (the text line) in # a tuple of tensor columns with the specified defaults, which also # sets the data type for each column decoded = tf.decode_csv(value, record_defaults=record_defaults) # batch actually reads the file and loads "batch_size" rows in a single tensor return tf.train.shuffle_batch(decoded, batch_size=batch_size, capacity=batch_size * 50, min_after_dequeue=batch_size) def inputs(): passenger_id, survived, pclass, name, sex, age, sibsp, parch, ticket, fare, cabin, embarked =read_csv(100, "train.csv", [[0.0], [0.0], [0], [""], [""], [0.0], [0.0], [0.0], [""], [0.0],[""], [""]]) # convert categorical data is_first_class = tf.to_float(tf.equal(pclass, [1])) is_second_class = tf.to_float(tf.equal(pclass, [2])) is_third_class = tf.to_float(tf.equal(pclass, [3])) gender = tf.to_float(tf.equal(sex, ["female"])) # Finally we pack all the features in a single matrix; # We then transpose to have a matrix with one example per row and one feature per column. features = tf.transpose(tf.stack([is_first_class, is_second_class, is_third_class, gender, age])) survived = tf.reshape(survived, [100, 1]) return features, surviveddef train(total_loss): learning_rate = 0.01 return tf.train.GradientDescentOptimizer(learning_rate).minimize(total_loss)def evaluate(sess, X, Y): predicted = tf.cast(inference(X) > 0.5, tf.float32) print(sess.run(tf.reduce_mean(tf.cast(tf.equal(predicted, Y), tf.float32))))with tf.Session() as sess: tf.global_variables_initializer().run() #tf.initialize_all_variables().run() X, Y = inputs() total_loss = loss(X, Y) train_op = train(total_loss) coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord) # actual training loop training_steps = 1000 for step in range(training_steps): sess.run([train_op]) # for debugging and learning purposes, see how the loss gets decremented thru training steps if step % 10 == 0: print("loss: ", sess.run([total_loss])) evaluate(sess, X, Y) coord.request_stop() coord.join(threads) sess.close()3. 使用softmax的分类,对水仙花数据分类
#softmax C-classify ,Iris-dataimport tensorflow as tf# this time weights form a matrix, not a column vector, one "weight vector" per class.W = tf.Variable(tf.zeros([4, 3]), name="weights")# so do the biases, one per class.b = tf.Variable(tf.zeros([3], name="bias"))# former inference is now used for combining inputsdef combine_inputs(X): return tf.matmul(X, W) + bdef inference(X): return tf.nn.softmax(combine_inputs(X))def loss(X, Y): return tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=Y, logits=combine_inputs(X)))def read_csv(batch_size, file_name, record_defaults): filename_queue = tf.train.string_input_producer(["E:\\testData\\taitannike\\" + file_name]) #filename_queue = tf.train.string_input_producer([os.path.dirname(__file__) + "/" + file_name]) reader = tf.TextLineReader(skip_header_lines=1) key, value = reader.read(filename_queue) # decode_csv will convert a Tensor from type string (the text line) in # a tuple of tensor columns with the specified defaults, which also # sets the data type for each column decoded = tf.decode_csv(value, record_defaults=record_defaults) # batch actually reads the file and loads "batch_size" rows in a single tensor return tf.train.shuffle_batch(decoded, batch_size=batch_size, capacity=batch_size * 50, min_after_dequeue=batch_size)def inputs(): sepal_length, sepal_width, petal_length, petal_width, label =\ read_csv(100, "iris.data", [[0.0], [0.0], [0.0], [0.0], [""]]) # convert class names to a 0 based class index. label_number = tf.to_int32(tf.argmax(tf.to_int32(tf.stack([ tf.equal(label, ["Iris-setosa"]), tf.equal(label, ["Iris-versicolor"]), tf.equal(label, ["Iris-virginica"]) ])), 0)) # Pack all the features that we care about in a single matrix; # We then transpose to have a matrix with one example per row and one feature per column. features = tf.transpose(tf.stack([sepal_length, sepal_width, petal_length, petal_width])) return features, label_numberdef train(total_loss): learning_rate = 0.01 return tf.train.GradientDescentOptimizer(learning_rate).minimize(total_loss)def evaluate(sess, X, Y): predicted = tf.cast(tf.arg_max(inference(X), 1), tf.int32) print(sess.run(tf.reduce_mean(tf.cast(tf.equal(predicted, Y), tf.float32))))# Launch the graph in a session, setup boilerplatewith tf.Session() as sess: tf.global_variables_initializer().run() #tf.initialize_all_variables().run() X, Y = inputs() total_loss = loss(X, Y) train_op = train(total_loss) coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord) # actual training loop training_steps = 10000 for step in range(training_steps): sess.run([train_op]) # for debugging and learning purposes, see how the loss gets decremented thru training steps if step % 10 == 0: print("loss: ", sess.run([total_loss])) evaluate(sess, X, Y) coord.request_stop() coord.join(threads) sess.close()
阅读全文
0 0
- TensorFlow学习笔记(二十一) tensorflow机器学习模型
- tensorflow学习笔记(二十一):tensorflow可视化
- TensorFlow学习笔记(二):TensorFlow实现线性回归模型
- TensorFlow学习笔记(二):TensorFlow入门
- tensorflow学习笔记(二):机器学习必备API
- 机器学习笔记二十三 TensorFlow
- tensorflow学习笔记(十一):seq2seq Model
- TensorFlow学习笔记(二)
- TensorFlow学习笔记(二)
- TensorFlow学习笔记(二)
- 【机器学习】Tensorflow学习笔记
- tensorflow学习笔记----二(CIFAR-10 模型 )
- TensorFlow学习笔记(三):TensorFlow实现逻辑回归模型
- TensorFlow学习笔记:编程模型
- tensorflow学习笔记(二):windows10_64 tensorflow-gpu cuda
- tensorflow学习(二)
- TensorFlow学习二:MNIST机器学习入门
- tensorflow学习笔记(二):tensor 变换
- Latex数学公式中的空格
- H5播放器内置播放视频(兼容绝大多数安卓和ios)
- 170817 WarGames-Natas(15)
- my sql里面的1064错误——[Err] 1064
- 用maven搭建SSM框架
- TensorFlow学习笔记(二十一) tensorflow机器学习模型
- muduo源码学习(10)-ThreadLocal
- 写点日志--排队叫号系统
- 微信小程序行业生态白皮书
- aarch64(ARMv8)交叉编译环境下载
- 中国人寿信息技术部实习总结
- Hadoop格式化后出现异常
- Win10操作系统找不到已输入的环境选项解决方案
- 安卓中扩展数据结构的探究解析