1 - Exploring the Tensorflow Library
导入库:
import math
import numpy as np
import h5py
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.python.framework import ops
from tf_utils import load_dataset, random_mini_batches, convert_to_one_hot, predict
import os
import tensorflow.python.util.deprecation as deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False
import tensorflow as tf
if type(tf.contrib) != type(tf): tf.contrib._warning = None
%matplotlib inline
np.random.seed(1)
来看一个计算单个训练样本损失的例子:
y_hat = tf.constant(36, name='y_hat') # Define y_hat constant. Set to 36.
y = tf.constant(39, name='y') # Define y. Set to 39
loss = tf.Variable((y - y_hat)**2, name='loss') # Create a variable for the loss
init = tf.global_variables_initializer() # When init is run later (session.run(init)),
# the loss variable will be initialized and ready to be computed
with tf.Session() as session: # Create a session and print the output
session.run(init) # Initializes the variables
print(session.run(loss)) # Prints the loss
结果为9
在TensorFlow中编写和运行程序有以下步骤:
- 创建尚未执行/计算的张量(变量)。
- 编写在这些张量之间进行的操作。
- 初始化张量。
- 创建一个会话。
- 运行会话,将会运行以上所编写的操作。
因此,当我们为损失创建一个变量时,我们简单地将损失定义为其他量的函数,但没有计算其值。为了计算它,需要运行init=tf.global_variables_initializer(),这样就初始化了损失变量,最后一行能够计算损失的值并且打印出来。
1.1 - Linear function
计算如下式子:Y=WX+b,其中W和X是随机矩阵,b是随机向量。
练习:计算WX+b,其中W,X和b由随机正态分布中提取。W的形状为(4,3),X为(3,1),b为(4,1),举个例子,下面是如何定义一个形状为(3,1)的常量X:
x=tf.constant(np.random.randn(3,1), name="X")
X = tf.constant(np.random.randn(3, 1), name='X')
W = tf.constant(np.random.randn(4, 3), name='W')
b = tf.constant(np.random.randn(4, 1), name='b')
Y = tf.matmul(W, X) + b
# Create the session using tf.Session() and run it with sess.run(...) on the variable you want to calculate
sess = tf.Session()
result = sess.run(Y)
1.2 - Computing the sigmoid
Tensorflow提供了许多常用的神经网络函数包括tf.sigmoid和tf.softmax等等,接下来计算sigmoid。
使用占位符变量x,当运行会话时,需要使用feed字典来传入输入z,作业中要做如下几件事:
- 创建一个占位符x
- 定义操作,使用tf.sigmoid计算
- 运行会话
练习:实现sigmoid函数。
两种创建并使用会话的方法:
# Create a placeholder for x. Name it 'x'.
x = tf.placeholder(tf.float32, name='x')
# compute sigmoid(x)
sigmoid = tf.sigmoid(x)
# Create a session, and run it. Please use the method 2 explained above.
# You should use a feed_dict to pass z's value to x.
with tf.Session() as sess:
# Run session and call the output "result"
result = sess.run(sigmoid, feed_dict={x:z})