目录

4.1 Building your Deep Neural Network: Step by Step

1 - Packages

2 - Outline of the Assignment

3 - Initialization

3.1 - 2-layer Neural Network

3.2 - L-layer Neural Network

4 - Forward propagation module

4.1 - Linear Forward

4.2 - Linear-Activation Forward

4.3 - L-Layer Model

5 - Cost function

6 - Backward propagation module

6.1 - Linear backward

6.2 - Linear-Activation backward

6.3 - L-Model Backward

6.4 - Update Parameters

4.2 Deep Neural Network for Image Classification: Application

1 - Packages

2 - Dataset

3 - Architecture of your model

3.1 - 2-layer neural network

3.2 - L-layer deep neural network

3.3 - General methodology

4 - Two-layer neural network

5 - L-layer Neural Network

6 - Results Analysis

7 - Test with your own image (optional/ungraded exercise)


4.1 Building your Deep Neural Network: Step by Step

符号:

  • 上标[l]表示第l层,例如:是第L层的激活函数,是第L层的参数。
  • 上标(i)表示第i个样本,例如:是第i个训练样本。
  • 下标i表示向量的第i个输入,例如:表示第l层激活函数的第i个输入。

1 - Packages

首先,运行下面的单元来导入在这个作业中需要的所有包:

  • numpy是使用python进行科学计算的基础包。
  • Matplotlib是一个用于在Python中绘制图形的库。
  • dnn_utils提供了一些必要的函数。
  • testCases提供了一些测试用例来评估函数的正确性。
  • np.random.seed(1)用来保持所有的随机函数调用的一致性。
import numpy as np
import h5py
import matplotlib.pyplot as plt
from testCases_v2 import *
from dnn_utils_v2 import sigmoid, sigmoid_backward, relu, relu_backward%matplotlib inline
plt.rcParams['figure.figsize'] = (5.0, 4.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'%load_ext autoreload
%autoreload 2np.random.seed(1)

2 - Outline of the Assignment

为了构建神经网络,需要实现几个辅助函数。这些辅助函数将在下节作业中用来构造一个双层神经网络和一个L层的神经网络。下面是任务大纲:

1.初始化双层神经网络和L层神经网络的参数

2.实现前向传播模块(紫色部分):

  • 完成一步前向传播的LINEAR部分(得到
  • 已有ACTIVATION函数(relu/sigmoid)
  • 合并前两步,得到新的[LINEAR→ACTIVATION]前向函数
  • 堆叠[LINEAR→RELU]前向函数L-1次(从第1层到第L-1层),在最后(最后一层L)加上一个[LINEAR→RELU]。得到新的L_model_forward函数。

3.计算损失

4.实现反向传播模块(红色部分):

  • 完成一步反向传播的LINEAR部分
  • 已有ACTIVATE函数的梯度(relu_backward/sigmoid_backward)
  • 合并前两部,得到新的[LINEAR→ACTIVATION]反向函数
  • 堆叠[LINEAR→RELU]反向函数L-1次,加上[LINEAR→SIGMOID],得到新的L_model_backward函数。

5.最后更新参数

注意:对于每一个前向函数,都有一个对应的反向函数,这就是为什么前向模块的每一步都要存储一些值在一个缓存器中,在反向传播模块你会用到这些缓存值来计算梯度。

3 - Initialization

完成两个辅助函数来初始化模型的参数,第一个函数初始化双层神经网络的参数,第二个函数初始化L层神经网络的参数。

3.1 - 2-layer Neural Network

练习:创建并初始化双层神经网络的参数。

说明:

  • 模型的结构是LINEAR→RELU→LINEAR→SIGMOID
  • 对于权重矩阵使用随机初始化,使用正确维度的np.random.randn(shape)*0.01
  • 对于偏置值初始化为零,使用np.zeros(shape)
W1 = np.random.randn(n_h, n_x) * 0.01
b1 = np.zeros(shape=(n_h, 1))
W2 = np.random.randn(n_y, n_h) * 0.01
b2 = np.zeros(shape=(n_y, 1))

3.2 - L-layer Neural Network

是l层的神经元数目,如果输入X的大小是(12288,209),即209个样本数:

练习:实现L层神经网络的初始化。

说明:

  • 模型的结构是[LINEAR→RELU] X (L-1) → LINEAR → SIGMOID,即有L-1层使用RELU激活函数,接着是一个输出层使用sigmoid激活函数。
  • 对于权重矩阵使用随机初始化,使用np.random.randn(shape)*0.01
  • 对于偏置值初始化为零,使用np.zeros(shape)
  • 对于不同层的神经元数目,将其存在变量layer_dims中。例如,在“Planar Data classification model”中,layer_dims就是[2,4,1]:两个输入单元,单隐层有四个隐藏单元,输出层有有一个输出单元。意味着W1的大小是(4,2),b1的大小是(4,1),W2的大小的(1,4),b2的大小是(1,1)。
np.random.seed(3)
parameters = {}
L = len(layer_dims)            # number of layers in the networkfor l in range(1, L):parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l-1]) * 0.01parameters['b' + str(l)] = np.zeros(shape=(layer_dims[l], 1))

4 - Forward propagation module

4.1 - Linear Forward

首先实现三个函数:

  • LINEAR
  • LINEAR → ACTIVATION,其中ACTIVATION是RELU或sigmoid
  • [LINEAR → RELU] X (L-1) → LINEAR → SIGMOID(整个模型)

线性前向模块计算如下:

其中,

练习:构建前向传播的线性模块。

Z = np.dot(W, A) + b

4.2 - Linear-Activation Forward

两个激活函数Sigmoid和ReLU,都返回两个值,激活值"a",一个"cache"包含了"Z"(将反馈给相应的反向函数的值)。

练习:实现LINEAR→ACTIVATION层的前向传播,数学表示为,使用linear_forward()和正确的激活函数。

if activation == "sigmoid":# Inputs: "A_prev, W, b". Outputs: "A, activation_cache".Z, linear_cache = linear_forward(A_prev, W, b)A, activation_cache = sigmoid(Z)elif activation == "relu":# Inputs: "A_prev, W, b". Outputs: "A, activation_cache".Z, linear_cache = linear_forward(A_prev, W, b)A, activation_cache = relu(Z)

4.3 - L-Layer Model

为了更方便地实现L层神经网络,需要一个函数来复制上一步(linear_activation_forward和RELU)L-1次,然后紧接着是linear_activation_forward和SIGMOID。

练习:实现上述模型的前向传播。

说明:,即

caches = []
A = X
L = len(parameters) // 2                  # number of layers in the neural network
# Implement [LINEAR -> RELU]*(L-1). Add "cache" to the "caches" list.
for l in range(1, L):A_prev = A A, cache = linear_activation_forward(A_prev, parameters['W' + str(l)], parameters['b' + str(l)], "relu")caches.append(cache)# Implement LINEAR -> SIGMOID. Add "cache" to the "caches" list.
AL, cache = linear_activation_forward(A, parameters['W' + str(L)], parameters['b' + str(L)], "sigmoid")
caches.append(cache)

5 - Cost function

实现前向和反向传播,需要计算损失以检查模型是否在学习。

练习:计算交叉熵损失J,公式如下:

cost = -np.mean(Y * np.log(AL) + (1 - Y) * np.log(1 - AL))

6 - Backward propagation module

和前向传播类似,用下列三步构建反向传播:

  • LINEAR反向
  • LINEAR→ACTIVATION反向,其中ACTIVATION计算RELU或sigmoid激活函数的导数
  • [LINEAR→RELU] X (L-1) → LINEAR → SIGMOID反向(整个模型)

6.1 - Linear backward

对于第l层,线性部分是

假设已经计算了,想得到

使用计算下列三个输出:

练习:利用上述三个公式实现linear_backward()

dW = np.dot(dZ, np.transpose(A_prev)) / m
db = np.mean(dZ).reshape(b.shape)
dA_prev = np.dot(np.transpose(W), dZ)

6.2 - Linear-Activation backward

提供了两个反向函数,sigmoid_backward和relu_backward,返回dZ,它们计算的是:

练习:实现LINEAR→ACTIVATION层的反向传播。

if activation == "relu":dZ = relu_backward(dA, activation_cache)dA_prev, dW, db = linear_backward(dZ, linear_cache)elif activation == "sigmoid":dZ = sigmoid_backward(dA, activation_cache)dA_prev, dW, db = linear_backward(dZ, linear_cache)

6.3 - L-Model Backward

接下来实现整个网络的反向传播,当实现L_model_forward函数时,在每一次迭代中,都储存了一个包含(X,W,b,Z)的cache,在反向传播模块会用到这些值来计算梯度,因此,在L_model_backward函数中,会从L层开始反向迭代所有隐藏层,每一步都会用到缓存值来反向传播通过第l层:

初始化反向传播:输出为,因此代码中需要计算,使用下列公式:

dAL = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL)) # derivative of cost with respect to AL

可以使用这个激活后的梯度dAL来保持反向传播,如上图所示,现在可以把dAL反馈给LINEAR→SIGMOID反向函数。之后,需要使用for循环迭代所有使用了LINEAR→RELU反向函数的其他层。需要存储每一个dA,dW和db在grads字典中,使用下列式子:

练习:实现[LINEAR→RELU] X (L-1) → LINEAR → SIGMOID模型的反向传播。

grads = {}
L = len(caches) # the number of layers
m = AL.shape[1]
Y = Y.reshape(AL.shape) # after this line, Y is the same shape as AL# Initializing the backpropagation
dAL = -(np.divide(Y, AL) - np.divide(1-Y, 1-AL))# Lth layer (SIGMOID -> LINEAR) gradients.
# Inputs: "AL, Y, caches".
# Outputs: "grads["dAL"], grads["dWL"], grads["dbL"]
current_cache = caches[L-1]
grads["dA" + str(L)], grads["dW" + str(L)], grads["db" + str(L)] = \linear_activation_backward(dAL, current_cache, "sigmoid")for l in reversed(range(L - 1)):# lth layer: (RELU -> LINEAR) gradients.# Inputs: "grads["dA" + str(l + 2)], caches". # Outputs: "grads["dA" + str(l + 1)] , grads["dW" + str(l + 1)] , grads["db" + str(l + 1)] current_cache = caches[l]grads["dA" + str(l + 1)] , grads["dW" + str(l + 1)] , grads["db" + str(l + 1)]  = \linear_activation_backward(grads["dA" + str(l + 2)], current_cache, "relu")

6.4 - Update Parameters

更新模型的参数,使用梯度下降:

其中是学习率,计算得到的结果存入参数字典。

练习:实现update_parameters()来使用梯度下降更新参数。

L = len(parameters) // 2 # number of layers in the neural network
# Update rule for each parameter. Use a for loop.
for l in range(L):parameters["W" + str(l+1)] = parameters["W" + str(l+1)] - \learning_rate * grads["dW" + str(l+1)]parameters["b" + str(l+1)] = parameters["b" + str(l+1)] - \learning_rate * grads["db" + str(l+1)]

4.2 Deep Neural Network for Image Classification: Application

1 - Packages

  • numpy是使用python进行科学计算的基础包。
  • Matplotlib是一个用于在Python中绘制图形的库。
  • h5py是一个与H5文件的数据集交互的通用包。
  • PIL和scipy用来在最后使用自己的图片来测试模型
  • dnn_app_utils提供了4.1作业中实现的函数。
  • np.random.seed(1)用来保持所有的随机函数调用的一致性。
import time
import numpy as np
import h5py
import matplotlib.pyplot as plt
import scipy
from PIL import Image
from scipy import ndimage
from dnn_app_utils_v2 import *%matplotlib inline
plt.rcParams['figure.figsize'] = (5.0, 4.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'%load_ext autoreload
%autoreload 2np.random.seed(1)

2 - Dataset

使用上一次作业中的猫数据集,当时的测试准确率为70%。

问题描述:给定一个数据集("data.h5"),包含:

  • 训练集,m_train张图片,标记为猫(1)和非猫(0)
  • 测试集,m_test张图片,标记为猫和非猫
  • 每张图片的大小为(num_px,num_px,3),三通道RGB
train_x_orig, train_y, test_x_orig, test_y, classes = load_data()# Explore your dataset
m_train = train_x_orig.shape[0]
num_px = train_x_orig.shape[1]
m_test = test_x_orig.shape[0]print ("Number of training examples: " + str(m_train))
print ("Number of testing examples: " + str(m_test))
print ("Each image is of size: (" + str(num_px) + ", " + str(num_px) + ", 3)")
print ("train_x_orig shape: " + str(train_x_orig.shape))
print ("train_y shape: " + str(train_y.shape))
print ("test_x_orig shape: " + str(test_x_orig.shape))
print ("test_y shape: " + str(test_y.shape))
Number of training examples: 209
Number of testing examples: 50
Each image is of size: (64, 64, 3)
train_x_orig shape: (209, 64, 64, 3)
train_y shape: (1, 209)
test_x_orig shape: (50, 64, 64, 3)
test_y shape: (1, 50)

其中一张图片:

# Example of a picture
index = 50
plt.imshow(train_x_orig[index])
print ("y = " + str(train_y[0,index]) + ". It's a " + classes[train_y[0,index]].decode("utf-8") +  " picture.")
y = 1. It's a cat picture.

首先对图片进行reshape和standardize操作:

# Reshape the training and test examples
train_x_flatten = train_x_orig.reshape(train_x_orig.shape[0], -1).T   # The "-1" makes reshape flatten the remaining dimensions
test_x_flatten = test_x_orig.reshape(test_x_orig.shape[0], -1).T# Standardize data to have feature values between 0 and 1.
train_x = train_x_flatten/255.
test_x = test_x_flatten/255.print ("train_x's shape: " + str(train_x.shape))
print ("test_x's shape: " + str(test_x.shape))
train_x's shape: (12288, 209)
test_x's shape: (12288, 50)

3 - Architecture of your model

构建两个不同的模型:双层神经网络和L层神经网络。

3.1 - 2-layer neural network

3.2 - L-layer deep neural network

3.3 - General methodology

构建模型的一般方法:

1.初始化参数/定义超参数

2.num_iterations次循环:

  • 前向传播
  • 计算损失函数
  • 反向传播
  • 更新参数

3.使用训练后的参数预测标签

4 - Two-layer neural network

问题:使用上一节实现的辅助函数,双层神经网络结构:LINEAR→RELU→LINEAR→SIGMOID.

def initialize_parameters(n_x, n_h, n_y):...return parameters def linear_activation_forward(A_prev, W, b, activation):...return A, cachedef compute_cost(AL, Y):...return costdef linear_activation_backward(dA, cache, activation):...return dA_prev, dW, dbdef update_parameters(parameters, grads, learning_rate):...return parameters

定义常数:

### CONSTANTS DEFINING THE MODEL ####
n_x = 12288     # num_px * num_px * 3
n_h = 7
n_y = 1
layers_dims = (n_x, n_h, n_y)

双层神经网络实现:

# GRADED FUNCTION: two_layer_modeldef two_layer_model(X, Y, layers_dims, learning_rate = 0.0075, num_iterations = 3000, print_cost=False):"""Implements a two-layer neural network: LINEAR->RELU->LINEAR->SIGMOID.Arguments:X -- input data, of shape (n_x, number of examples)Y -- true "label" vector (containing 0 if cat, 1 if non-cat), of shape (1, number of examples)layers_dims -- dimensions of the layers (n_x, n_h, n_y)num_iterations -- number of iterations of the optimization looplearning_rate -- learning rate of the gradient descent update ruleprint_cost -- If set to True, this will print the cost every 100 iterations Returns:parameters -- a dictionary containing W1, W2, b1, and b2"""np.random.seed(1)grads = {}costs = []                              # to keep track of the costm = X.shape[1]                           # number of examples(n_x, n_h, n_y) = layers_dims# Initialize parameters dictionary, by calling one of the functions you'd previously implemented### START CODE HERE ### (≈ 1 line of code)parameters = initialize_parameters(n_x, n_h, n_y)### END CODE HERE #### Get W1, b1, W2 and b2 from the dictionary parameters.W1 = parameters["W1"]b1 = parameters["b1"]W2 = parameters["W2"]b2 = parameters["b2"]# Loop (gradient descent)for i in range(0, num_iterations):# Forward propagation: LINEAR -> RELU -> LINEAR -> SIGMOID. Inputs: "X, W1, b1". Output: "A1, cache1, A2, cache2".### START CODE HERE ### (≈ 2 lines of code)A1, cache1 = linear_activation_forward(X, W1, b1, "relu")A2, cache2 = linear_activation_forward(A1, W2, b2, "sigmoid")### END CODE HERE #### Compute cost### START CODE HERE ### (≈ 1 line of code)cost = compute_cost(A2, Y)### END CODE HERE #### Initializing backward propagationdA2 = -(np.divide(Y, A2) - np.divide(1-Y, 1-A2))# Backward propagation. Inputs: "dA2, cache2, cache1". Outputs: "dA1, dW2, db2; also dA0 (not used), dW1, db1".### START CODE HERE ### (≈ 2 lines of code)dA1, dW2, db2 = linear_activation_backward(dA2, cache2, "sigmoid")dA0, dW1, db1 = linear_activation_backward(dA1, cache1, "relu")### END CODE HERE #### Set grads['dWl'] to dW1, grads['db1'] to db1, grads['dW2'] to dW2, grads['db2'] to db2grads['dW1'] = dW1grads['db1'] = db1grads['dW2'] = dW2grads['db2'] = db2# Update parameters.### START CODE HERE ### (approx. 1 line of code)parameters = update_parameters(parameters, grads, learning_rate)### END CODE HERE #### Retrieve W1, b1, W2, b2 from parametersW1 = parameters["W1"]b1 = parameters["b1"]W2 = parameters["W2"]b2 = parameters["b2"]# Print the cost every 100 training exampleif print_cost and i % 100 == 0:print("Cost after iteration {}: {}".format(i, np.squeeze(cost)))if print_cost and i % 100 == 0:costs.append(cost)# plot the costplt.plot(np.squeeze(costs))plt.ylabel('cost')plt.xlabel('iterations (per tens)')plt.title("Learning rate =" + str(learning_rate))plt.show()return parameters

训练:

parameters = two_layer_model(train_x, train_y, layers_dims = (n_x, n_h, n_y), num_iterations = 2500, print_cost=True)

训练集上的准确率:

predictions_train = predict(train_x, train_y, parameters)
Accuracy: 1.0

测试集上的准确率:

predictions_test = predict(test_x, test_y, parameters)
Accuracy: 0.72

5 - L-layer Neural Network

问题:使用上一节实现的辅助函数,L层神经网络结构:[LINEAR→RELU] X (L-1) → LINEAR → SIGMOID.

def initialize_parameters_deep(layer_dims):...return parameters def L_model_forward(X, parameters):...return AL, cachesdef compute_cost(AL, Y):...return costdef L_model_backward(AL, Y, caches):...return gradsdef update_parameters(parameters, grads, learning_rate):...return parameters

定义常数:

### CONSTANTS ###
layers_dims = [12288, 20, 7, 5, 1] #  5-layer model

L层神经网络实现:

# GRADED FUNCTION: L_layer_modeldef L_layer_model(X, Y, layers_dims, learning_rate = 0.0075, num_iterations = 3000, print_cost=False):#lr was 0.009"""Implements a L-layer neural network: [LINEAR->RELU]*(L-1)->LINEAR->SIGMOID.Arguments:X -- data, numpy array of shape (number of examples, num_px * num_px * 3)Y -- true "label" vector (containing 0 if cat, 1 if non-cat), of shape (1, number of examples)layers_dims -- list containing the input size and each layer size, of length (number of layers + 1).learning_rate -- learning rate of the gradient descent update rulenum_iterations -- number of iterations of the optimization loopprint_cost -- if True, it prints the cost every 100 stepsReturns:parameters -- parameters learnt by the model. They can then be used to predict."""np.random.seed(1)costs = []                         # keep track of cost# Parameters initialization.### START CODE HERE ###parameters = initialize_parameters_deep(layers_dims)### END CODE HERE #### Loop (gradient descent)for i in range(0, num_iterations):# Forward propagation: [LINEAR -> RELU]*(L-1) -> LINEAR -> SIGMOID.### START CODE HERE ### (≈ 1 line of code)AL, caches = L_model_forward(X, parameters)### END CODE HERE #### Compute cost.### START CODE HERE ### (≈ 1 line of code)cost = compute_cost(AL, Y)### END CODE HERE #### Backward propagation.### START CODE HERE ### (≈ 1 line of code)grads = L_model_backward(AL, Y, caches)### END CODE HERE #### Update parameters.### START CODE HERE ### (≈ 1 line of code)parameters = update_parameters(parameters, grads, learning_rate)### END CODE HERE #### Print the cost every 100 training exampleif print_cost and i % 100 == 0:print ("Cost after iteration %i: %f" %(i, cost))if print_cost and i % 100 == 0:costs.append(cost)# plot the costplt.plot(np.squeeze(costs))plt.ylabel('cost')plt.xlabel('iterations (per tens)')plt.title("Learning rate =" + str(learning_rate))plt.show()return parameters

训练:

parameters = L_layer_model(train_x, train_y, layers_dims, num_iterations = 2500, print_cost = True)

训练集上的准确率:

pred_train = predict(train_x, train_y, parameters)
Accuracy: 0.9856459330143541

测试集上的准确率:

pred_test = predict(test_x, test_y, parameters)
Accuracy: 0.8

6 - Results Analysis

print_mislabeled_images(classes, test_x, test_y, pred_test)

一些错分类的图片:

7 - Test with your own image (optional/ungraded exercise)

%matplotlib inline
## START CODE HERE ##
my_image = "my_image.jpg" # change this to the name of your image file
my_label_y = [1] # the true class of your image (1 -> cat, 0 -> non-cat)
## END CODE HERE ##fname = "images/" + my_image
image = np.array(ndimage.imread(fname, flatten=False))
my_image = scipy.misc.imresize(image, size=(num_px,num_px)).reshape((num_px*num_px*3,1))
my_predicted_image = predict(my_image, my_label_y, parameters)plt.imshow(image)
print ("y = " + str(np.squeeze(my_predicted_image)) + ", your L-layer model predicts a \"" + classes[int(np.squeeze(my_predicted_image)),].decode("utf-8") +  "\" picture.")
Accuracy: 1.0
y = 1.0, your L-layer model predicts a "cat" picture.

deeplearning.ai——构建深度神经网络做图像处理相关推荐

  1. deeplearning.ai 改善深度神经网络(正则化、优化、mini-batch等)附代码作业答案

    一.初始化 1.为什么神经网络的所有参数不能全部初始化为0>? 若w初始化为0 ,很可能导致模型失效,无法收敛.也就是说如果我们初始将所有的w初始化为0,那么进行前向传播时每一层得到的值都是一样 ...

  2. Python吴恩达深度学习作业4 -- 构建深度神经网络

    逐步构建你的深度神经网络 在此之前你已经训练了一个2层的神经网络(只有一个隐藏层).本周,你将学会构建一个任意层数的深度神经网络! 在此作业中,你将实现构建深度神经网络所需的所有函数. 在下一个作业中 ...

  3. TensorFlow2.0(四)--Keras构建深度神经网络(DNN)

    Keras构建深度神经网络(DNN) 1. 深度神经网络简介 2. Kerase搭建DNN模型 2.1 导入相应的库 2.2 数据加载与归一化 2.3 网络模型的构建 2.4 批归一化,dropout ...

  4. 【吴恩达deeplearning.ai】深度学习(7):卷积神经网络

    计算机视觉(Computer Vision)是一门研究如何教机器"看"的科学,计算机视觉研究相关的理论和技术,试图创建能够从图像或者多维数据中获取"信息"的人工 ...

  5. 完结撒花!吴恩达DeepLearning.ai《深度学习》课程笔记目录总集

    作者: 大树先生 博客: http://blog.csdn.net/koala_tree 知乎:https://www.zhihu.com/people/dashuxiansheng GitHub:h ...

  6. deeplearning.ai 改善深层神经网络 week2 优化算法

    这一周的主题是优化算法. 1.  Mini-batch: 上一门课讨论的向量化的目的是去掉for循环加速优化计算,X = [x(1) x(2) x(3) ... x(m)],X的每一个列向量x(i)是 ...

  7. keras中lstm参数_如何使用Keras为自定义NER构建深度神经网络

    在这篇文章中,我们将学习如何使用Keras创建一个简单的神经网络来从非结构化文本数据中提取信息(NER). 模型架构 在这里,我们将使用BILSTM + CRF层.LSTM层用于过滤不需要的信息,将仅 ...

  8. 【CV】第 3 章:使用 PyTorch 构建深度神经网络

  9. 吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Cours

    吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai--基于 Course ...

  10. 【程序员进阶之路】吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程

    8 月 8 日,--基于 Coursera 的系列深度学习课程,希望将人工智能时代的基础知识传播到更多人身边.一周过去后,许多人已经学完了目前开放的前三门课程.这些新课适合哪些人,它是否能和经典的&l ...

最新文章

  1. php教程源码分享,php教程|php源码|php学习
  2. 烂泥:mysql帮助命令使用说明
  3. 在@NamedQueries中枚举@NamedQuery
  4. python中的引用怎么理解_python 引用和对象理解
  5. 消息队列MQ夺命连环11问:kafka、rabbitmq、rocketmq、activemq
  6. linux的一些软件的安装路径
  7. XElement.Load 需要释放吗_因为信用卡逾期还不上坐牢了,刑满释放后,还需要继续还钱吗?...
  8. 大道至简java伪代码
  9. 人类究竟需要什么样的微积分原理
  10. 开源Java B2B2C商城项目Javashop的部署安装过程
  11. Emmagee——Android性能测试工具
  12. 编程语言Netty原理浅析
  13. 史诗级Java入门教程,想成为初级程序员看他就够了
  14. 磁共振指纹压缩感知框架
  15. SEO工具脚本,Python百度下拉框关键词采集工具
  16. 宝塔面板权限问题导致php上传文件失败
  17. 【从零开始学习YOLOv3】3.YOLOv3的数据组织和处理
  18. 阈的粤语发音_新编粤语读音字典 - 粤语 | Cantonese | 白话 - 声同小语种论坛 - Powered by phpwind...
  19. linux命令下jq的用法(curl 格式化输出json 字符串)
  20. 1、关于百兆口、千兆口、万兆口端口和网线的小常识

热门文章

  1. Maven Gradle 区别
  2. jquery自适应宽度轮播图
  3. PHP导出MySQL数据到Excel文件
  4. mysql 5.1 到 mysql 5.2的出现的索引BTREE问题 use near 'USING BTREE
  5. 用WPF开发仿QQ概念版之--------Loading预加载界面(闪屏窗体)
  6. 屏幕录像软件Community Clips Recorder简介及其使用技巧
  7. 【OpenCV学习笔记】【函数学习】四(origin+imageData+cvcopy()函数+CvMemStorage 类型+CvPoint类型)
  8. 【Sigmoid】操作对象(对数据结果进行验证)
  9. 操作系统学习笔记以及个人见解
  10. jquery ajax自动生成表格table(一)