Tensorflow Ubuntu16.04上安装及CPU运行Tensorboard、CNN、RNN图文教程
2017-05-24 13:39
1136 查看
Tensorflow Ubuntu16.04上安装及CPU运行tensorboard、CNN、RNN图文教程
Ubuntu16.04系统安装
Win7 U盘安装Ubuntu16.04 双系统详细教程参看博客:http://blog.csdn.net/coderjyf/article/details/51241919VMware12安装虚拟机教程、Ubuntu16.04安装教程参看百度经验:http://jingyan.baidu.com/article/c275f6ba07e269e33d756714.html
懒人版:下载备份好的已装有Tensorflow的系统:http://pan.baidu.com/s/1eRPWlKu 密码:j3i2
懒人版系统还原方法:
①安装VMware
Workstation,把下载好的懒人版系统Tensorflow_Ubuntu16.04.rar解压,用VMware Workstation打开,如图:
②开机密码:111111
建议使用双系统的Ubuntu,因为虚拟机有点卡,如果你用的是懒人版的备份系统,你可以直接跳到tensorflow测试运行步骤了。
python3.5安装
1.ubuntu16.04系统会自带python2.7,请不要卸载它。不同版本的Python可以共存在一个系统上。Ctrl+Alt+T打开终端输入命令:python可查看当前版本(exit()退出python编辑)。若卸载之后,桌面系统会被影响。
2.依次输入命令并回车(如有密码验证,输入密码,回车):
$
sudo add-apt-repository ppa:fkrull/deadsnakes
$ sudo apt-get update
$ sudo apt-get install python3.5
$ sudo cp /usr/bin/python /usr/bin/python_bak,先备份
$ sudo rm /usr/bin/python,删除
$ sudo ln -s /usr/bin/python3.5 /usr/bin/python,默认设置成python3.5,重建软链接这样在终端中输入python默认就是 3.5版本了
Tensorflow安装
1.安装python3-pip$ sudo apt-get install python3-pip
输入后会出现一串代码,然后问是否继续,输入y回车。
2.安装tensorflow
$ sudo
pip3 install tensorflow
(1)若出现红色可选择重复此步操作或下载安装:
手动下载: https://pypi.python.org/pypi/tensorflow
网盘下载: 链接:http://pan.baidu.com/s/1eSOQ5zG 密码:aqkr
(2)把下载好的文件放到home目录下,可通过ls查看到
①执行安装tensorflow,若出现红色可选择重复此步操作。
$
sudo pip3 install tensorflow-1.2.0rc0-cp35-cp35m-manylinux1_x86_64.whl
②安装成功界面如下:
安装Komodo编辑工具(类似于windows下的notepad++)
1.下载网盘下载: http://pan.baidu.com/s/1i4HIAhf密码:e7js
官网下载:https://www.activestate.com/komodo-edit
2.把下载好的文件放到home目录下,解压该文件(在文件上右击执行“提取到此处”),可通过ls查看到
①打开Komodo-Edit-10.2.1-17670-linux-x86_64文件夹
$ cd Komodo-Edit-10.2.1-17670-linux-x86_64/
②输入 sudo ./install.sh 安装Komodo-Edit,安装完成后,搜索“Komodo”即可打开该软件
Tensorflow测试运行
以下代码(包括MNIST数据集)网盘下载:http://pan.baidu.com/s/1chFs8u 密码:ikh71.tensorboard.py
""" Please note, this code is only for python 3+. If you are using python 2+, please modify the code accordingly. """ from __future__ import print_function import tensorflow as tf import numpy as np def add_layer(inputs, in_size, out_size, n_layer, activation_function=None): # add one more layer and return the output of this layer layer_name = 'layer%s' % n_layer with tf.name_scope(layer_name): with tf.name_scope('weights'): Weights = tf.Variable(tf.random_normal([in_size, out_size]), name='W') tf.summary.histogram(layer_name + '/weights', Weights) with tf.name_scope('biases'): biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b') tf.summary.histogram(layer_name + '/biases', biases) with tf.name_scope('Wx_plus_b'): Wx_plus_b = tf.add(tf.matmul(inputs, Weights), biases) if activation_function is None: outputs = Wx_plus_b else: outputs = activation_function(Wx_plus_b, ) tf.summary.histogram(layer_name + '/outputs', outputs) return outputs # Make up some real data x_data = np.linspace(-1, 1, 300)[:, np.newaxis] noise = np.random.normal(0, 0.05, x_data.shape) y_data = np.square(x_data) - 0.5 + noise # define placeholder for inputs to network with tf.name_scope('inputs'): xs = tf.placeholder(tf.float32, [None, 1], name='x_input') ys = tf.placeholder(tf.float32, [None, 1], name='y_input') # add hidden layer l1 = add_layer(xs, 1, 10, n_layer=1, activation_function=tf.nn.relu) # add output layer prediction = add_layer(l1, 10, 1, n_layer=2, activation_function=None) # the error between prediciton and real data with tf.name_scope('loss'): loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1])) tf.summary.scalar('loss', loss) with tf.name_scope('train'): train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) sess = tf.Session() merged = tf.summary.merge_all() writer = tf.summary.FileWriter("logs/", sess.graph) init = tf.global_variables_initializer() sess.run(init) for i in range(1000): sess.run(train_step, feed_dict={xs: x_data, ys: y_data}) if i % 50 == 0: result = sess.run(merged, feed_dict={xs: x_data, ys: y_data}) writer.add_summary(result, i) # direct to the local dir and run this in terminal: # $ tensorboard --logdir logs
①在home目录建立tensorflower文件夹,把tensorboard.py放入该目录下,运行如下命令:
$ cd tensorflow/
$ python tensorboard.py
②此时tensorflow文件夹下将产生一个logs文件夹,然后输入命令能产生查看tensorboard的网址:
$ tensorboard --logdir logs
运行如下图所示:
③打开 http://ubuntu:6006即可查看,loss曲线:
④神经网络图:
;
⑤每一层的weights和biases变化情况
2.CNN.py
""" Please note, this code is only for python 3+. If you are using python 2+, please modify the code accordingly. """ from __future__ import print_function import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # number 1 to 10 data mnist = input_data.read_data_sets('MNIST_data', one_hot=True) def compute_accuracy(v_xs, v_ys): global prediction y_pre = sess.run(prediction, feed_dict={xs: v_xs, keep_prob: 1}) correct_prediction = tf.equal(tf.argmax(y_pre,1), tf.argmax(v_ys,1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys, keep_prob: 1}) return result def weight_variable(shape): initial = tf.truncated_normal(shape, stddev=0.1) return tf.Variable(initial) def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial) def conv2d(x, W): # stride [1, x_movement, y_movement, 1] # Must have strides[0] = strides[3] = 1 return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') def max_pool_2x2(x): # stride [1, x_movement, y_movement, 1] return tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME') # define placeholder for inputs to network xs = tf.placeholder(tf.float32, [None, 784])/255. # 28x28 ys = tf.placeholder(tf.float32, [None, 10]) keep_prob = tf.placeholder(tf.float32) x_image = tf.reshape(xs, [-1, 28, 28, 1]) # print(x_image.shape) # [n_samples, 28,28,1] ## conv1 layer ## W_conv1 = weight_variable([5,5, 1,32]) # patch 5x5, in size 1, out size 32 b_conv1 = bias_variable([32]) h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1) # output size 28x28x32 h_pool1 = max_pool_2x2(h_conv1) # output size 14x14x32 ## conv2 layer ## W_conv2 = weight_variable([5,5, 32, 64]) # patch 5x5, in size 32, out size 64 b_conv2 = bias_variable([64]) h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2) # output size 14x14x64 h_pool2 = max_pool_2x2(h_conv2) # output size 7x7x64 ## fc1 layer ## W_fc1 = weight_variable([7*7*64, 1024]) b_fc1 = bias_variable([1024]) # [n_samples, 7, 7, 64] ->> [n_samples, 7*7*64] h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64]) h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1) h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob) ## fc2 layer ## W_fc2 = weight_variable([1024, 10]) b_fc2 = bias_variable([10]) prediction = tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2) # the error between prediction and real data cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction), reduction_indices=[1])) # loss train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) sess = tf.Session() # important step # tf.initialize_all_variables() no long valid from # 2017-03-02 if using tensorflow >= 0.12 if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1: init = tf.initialize_all_variables() else: init = tf.global_variables_initializer() sess.run(init) for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys, keep_prob: 0.5}) if i % 50 == 0: print(compute_accuracy( mnist.test.images, mnist.test.labels))
3.RNN.py
""" This code is a modified version of the code from this link: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/recurrent_network.py His code is a very good one for RNN beginners. Feel free to check it out. """ import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # set random seed for comparing the two result calculations tf.set_random_seed(1) # this is data mnist = input_data.read_data_sets('MNIST_data', one_hot=True) # hyperparameters lr = 0.001 #learning rate training_iters = 100000 batch_size = 128 n_inputs = 28 # MNIST data input (img shape: 28*28) n_steps = 28 # time steps n_hidden_units = 128 # neurons in hidden layer n_classes = 10 # MNIST classes (0-9 digits) # tf Graph input x = tf.placeholder(tf.float32, [None, n_steps, n_inputs]) y = tf.placeholder(tf.float32, [None, n_classes]) # Define weights weights = { # (28, 128) 'in': tf.Variable(tf.random_normal([n_inputs, n_hidden_units])), # (128, 10) 'out': tf.Variable(tf.random_normal([n_hidden_units, n_classes])) } biases = { # (128, ) 'in': tf.Variable(tf.constant(0.1, shape=[n_hidden_units, ])), # (10, ) 'out': tf.Variable(tf.constant(0.1, shape=[n_classes, ])) } def RNN(X, weights, biases): # hidden layer for input to cell ######################################## # transpose the inputs shape from # X ==> (128 batch * 28 steps, 28 inputs) X = tf.reshape(X, [-1, n_inputs]) # into hidden # X_in = (128 batch * 28 steps, 128 hidden) X_in = tf.matmul(X, weights['in']) + biases['in'] # X_in ==> (128 batch, 28 steps, 128 hidden) X_in = tf.reshape(X_in, [-1, n_steps, n_hidden_units]) # cell ########################################## # basic LSTM Cell. if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1: cell = tf.nn.rnn_cell.BasicLSTMCell(n_hidden_units, forget_bias=1.0, state_is_tuple=True) else: cell = tf.contrib.rnn.BasicLSTMCell(n_hidden_units) # lstm cell is divided into two parts (c_state, h_state) init_state = cell.zero_state(batch_size, dtype=tf.float32) # You have 2 options for following step. # 1: tf.nn.rnn(cell, inputs); # 2: tf.nn.dynamic_rnn(cell, inputs). # If use option 1, you have to modified the shape of X_in, go and check out this: # https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/recurrent_network.py # In here, we go for option 2. # dynamic_rnn receive Tensor (batch, steps, inputs) or (steps, batch, inputs) as X_in. # Make sure the time_major is changed accordingly. outputs, final_state = tf.nn.dynamic_rnn(cell, X_in, initial_state=init_state, time_major=False) # hidden layer for output as the final results ############################################# # results = tf.matmul(final_state[1], weights['out']) + biases['out'] # # or # unpack to list [(batch, outputs)..] * steps if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1: outputs = tf.unpack(tf.transpose(outputs, [1, 0, 2])) # states is the last outputs else: outputs = tf.unstack(tf.transpose(outputs, [1,0,2])) results = tf.matmul(outputs[-1], weights['out']) + biases['out'] # shape = (128, 10) return results pred = RNN(x, weights, biases) cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y)) train_op = tf.train.AdamOptimizer(lr).minimize(cost) correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1)) accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32)) with tf.Session() as sess: # tf.initialize_all_variables() no long valid from # 2017-03-02 if using tensorflow >= 0.12 if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1: init = tf.initialize_all_variables() else: init = tf.global_variables_initializer() sess.run(init) step = 0 while step * batch_size < training_iters: batch_xs, batch_ys = mnist.train.next_batch(batch_size) batch_xs = batch_xs.reshape([batch_size, n_steps, n_inputs]) sess.run([train_op], feed_dict={ x: batch_xs, y: batch_ys, }) if step % 20 == 0: print(sess.run(accuracy, feed_dict={ x: batch_xs, y: batch_ys, })) step += 1
ps:如想详细了解以上代码的具体讲解可参看:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/
或者网盘下载视频:链接:http://pan.baidu.com/s/1i57P1hN 密码:rxgh,以上代码均在该视频学习指导下完成。
相关文章推荐
- Tensorflow Ubuntu16.04上安装及CPU运行Tensorboard、CNN、RNN图文教程(转载)
- ubuntu16.04下安装TensorFlow(GPU加速)----详细图文教程
- ubuntu16.04下安装TensorFlow(GPU加速)----详细图文教程
- ubuntu16.04下安装TensorFlow(GPU加速)----详细图文教程
- ubuntu16.04中安装CPU版的tensorflow教程
- Ubuntu16.04下安装tensorflow(Anaconda3+pycharm+tensorflow+CPU)
- tensorflow学习笔记十一:ubuntu16.04下安装TensorFlow(GPU加速)----详细图文教程
- ubuntu16.04下安装TensorFlow(GPU加速)----详细图文教程
- ubuntu16.04下安装TensorFlow(GPU加速)----详细图文教程
- Ubuntu 16.04安装tensorflow_cpu详细教程
- Ubuntu16.04下安装Tensorflow CPU版本(图文详解)
- Caffe(CPU)-Ubuntu16.04下安装教程(未完成)
- 深度学习文章1:Caffe安装教程:Ubuntu16.04(CPU)
- [置顶] Ubuntu 16.04最简单的tensorflow-gpu安装教程
- Ubuntu 16.04安装tensorflow,theano,keras和caffe,针对CPU only
- ubuntu16.04 python3.5下安装tensorflow(cpu only)
- ubuntu 16.04 安装Tensorflow(CPU和GPU)
- Ubuntu16.04安装TensorFlow教程
- ubuntu16.04 64位 cpu安装tensorflow+theano+keras+caffe+xgboost
- Vmware虚拟机安装Ubuntu 16.04 LTS(长期支持)版本+VMware tools安装的图文教程