-
偏置偏置偏置
查看全部 -
留痕跡查看全部
-
多分類邏輯斯蒂回歸模型
查看全部 -
1.雖然神經(jīng)元模型簡單,但是花在數(shù)據(jù)處理和訓(xùn)練模型上的時(shí)間也不少。在多分類時(shí)重用這部分代碼,只要修改模型即可。
2.修改模型(多個(gè)神經(jīng)元(10個(gè))多分類實(shí)現(xiàn)邏輯斯蒂回歸):(單層神經(jīng)網(wǎng)絡(luò):10個(gè)神經(jīng)元)
(做修改的地方)
?for filename in filenames:
????????????data, labels = load_data(filename)
????????????# 不需要在做filter
????????????all_data.append(data)
????????????all_labels.append(labels)
?
# [None], y:label,[0,5,6,3,...]
y = tf.placeholder(tf.int64, [None]) ????
?
# (3072, 10)
w = tf.get_variable('w', [x.get_shape()[-1], 10], ??# 多分類
???????????????????initializer=tf.random_normal_initializer(0, 1)) ??#initializer表示初始化,這里使用正態(tài)分布,均值為0,方差為1
# (10, )
b = tf.get_variable('b', [10],
???????????????????initializer=tf.constant_initializer(0.0)) ??# b使用常量初始化
# get_variable表示獲取變量,如果已經(jīng)定義好了就使用,如果沒有就定義
?
# [None, 3072] * [3072, 10] = [None, 10]
y_ = tf.matmul(x, w) + b
?
# mean square loss
'''
# 因?yàn)槭嵌喾诸?,使用softmax
# course:1+e^x
# api:e^x/sum(e^x)
# 歸一化
# p_y:每個(gè)樣本都是一個(gè)分布,10個(gè)值加起來等于1,[[0.01,0.9,...0.03], []...]
p_y = tf.nn.softmax(y_)
# 多分類的loss,可以使用one-hot編碼把y也變成一個(gè)分布
# 5 -> [0,0,0,0,0,1,0,0,0,0]
y_one_hot = tf.one_hot(y, 10, dtype=tf.float32)
loss = tf.reduce_mean(tf.square(y_one_hot - p_y)) ??# ?類型不一致需要變換
'''
?
loss = tf.losses.sparse_softmax_cross_entropy(labels=y, logits=y_)
# y_ -> softmax
# y -> one_hot
# loss = ylogy_
?
# 得到的是index,是一個(gè)int值
predict = tf.argmax(y_, 1)
# [1, 0, 1, 1, 0, 1,...]
correct_prediction = tf.equal(predict, y) ??# bool
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float64))
3.API不會(huì)的時(shí)候要學(xué)會(huì)查文檔。
4.jupyter notebook的一些用法:

查看全部 -
1.# 執(zhí)行計(jì)算圖,首先要初始化變量
init = tf.global_variables_initializer()
batch_size = 20
train_steps = 100000 ???# 因?yàn)槭且粋€(gè)神經(jīng)元,所以還是挺快的
test_steps = 100 ?# 20 * 200 = 2000 張圖片
?
# 對(duì)于tensorflow來說,在構(gòu)建好計(jì)算圖后,需要開啟一個(gè)會(huì)話session
# 打開會(huì)話之后,就可以執(zhí)行計(jì)算圖了
with tf.Session() as sess:
????sess.run(init)
????for i in range(train_steps):
????????batch_data, batch_labels = train_data.next_batch(batch_size)
????????# 在會(huì)話中執(zhí)行計(jì)算圖使用sess.run()方法,如果加了train_op,就說明在這次run中我們就去訓(xùn)練了,如果沒有,就是在測試模式下
????????# feed_dict:要喂入的數(shù)據(jù),因?yàn)榍懊鎥和y都是placeholder,所以需要輸入數(shù)據(jù),x和y應(yīng)該輸入的是CIFAR-10的數(shù)據(jù),分別是圖片數(shù)據(jù)和label數(shù)據(jù)
????????# 需要在CIFAR-10數(shù)據(jù)集上循環(huán)遍歷整個(gè)數(shù)據(jù),使得feed_dict拿到的是不同的數(shù)據(jù)
????????# 為了達(dá)到這種處理模式,我們需要對(duì)CIFAR-10的數(shù)據(jù)集做一些處理
????????loss_val, acc_val, _ = sess.run(
????????????[loss, accuracy, train_op],
????????????feed_dict={x: batch_data, y: batch_labels}) ??
????????# 打印log
????????if (i+1) % 500 == 0:
????????????print('[Train] Step: %d, loss: %4.5f, acc: %4.5f' % (i+1, loss_val, acc_val))
????????if (i+1) % 5000 == 0:
????????????# 因?yàn)閠est不用shuffle,所以遍歷完之后拋出異常,所以需要在遍歷完一次之后重新創(chuàng)建CifarData類
????????????test_data = CifarData(test_filenames, False)
????????????all_test_acc_val = [] ???# 需要做一個(gè)總的test上的結(jié)果,所以需要把這些結(jié)果加起來做平均
????????????for j in range(test_steps):
????????????????test_batch_data, test_batch_labels = test_data.next_batch(batch_size)
????????????????test_acc_val = sess.run([accuracy], feed_dict={x: test_batch_data, y: test_batch_labels})
????????????????all_test_acc_val.append(test_acc_val)
????????????test_acc = np.mean(all_test_acc_val)
????????????print('[Test] Step: %d, acc: %4.5f' % (i+1, test_acc))
????????????# 兩次測試準(zhǔn)確率是一樣的,說明沒有學(xué)習(xí)到什么東西,我們需要做一下改進(jìn)——》CifarData
2.# 為什么不做歸一化準(zhǔn)確率在大約0.5呢?因?yàn)樗臄?shù)值比較大,而且它的數(shù)值都在0-1之間,所以導(dǎo)致它的預(yù)測會(huì)偏向一方或另一方,類似于sigmoid
????????self._data = self._data / 127.5 - 1 ???# 一般來說,我們會(huì)把圖像縮放到-1到1之間,所以進(jìn)行縮放:歸一化
查看全部 -
1.如何執(zhí)行計(jì)算圖:
# 執(zhí)行計(jì)算圖,首先要初始化變量
init = tf.global_variable_initializer()
# 對(duì)于tensorflow來說,在構(gòu)建好計(jì)算圖后,需要開啟一個(gè)會(huì)話session
# 打開會(huì)話之后,就可以執(zhí)行計(jì)算圖了
with tf.Session() as sess:
?????# 在會(huì)話中執(zhí)行計(jì)算圖使用sess.run()方法,如果加了train_op,就說明在這次run中我們就去訓(xùn)練了,如果沒有,就是在測試模式下
????# feed_dict:要喂入的數(shù)據(jù),因?yàn)榍懊鎥和y都是placeholder,所以需要輸入數(shù)據(jù),x和y應(yīng)該輸入的是CIFAR-10的數(shù)據(jù),分別是圖片數(shù)據(jù)和label數(shù)據(jù)
????# 需要在CIFAR-10數(shù)據(jù)集上循環(huán)遍歷整個(gè)數(shù)據(jù),使得feed_dict拿到的是不同的數(shù)據(jù)
????# 為了達(dá)到這種處理模式,我們需要對(duì)CIFAR-10的數(shù)據(jù)集做一些處理
sess.run([loss, accuracy, train_op], feed_dict={x: }) ???
?
# CIFAR-10數(shù)據(jù)處理的方法
class CifarData:
????# 初始化:filenames,文件名說明對(duì)于訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集是分開的
????# need_shuffle:對(duì)于訓(xùn)練集來說,在訓(xùn)練的時(shí)候,過完一遍數(shù)據(jù)之后,需要shuffle一下數(shù)據(jù),就是使得數(shù)據(jù)更加散亂,散亂代表數(shù)據(jù)之間沒有依賴關(guān)系,使得泛化能力更強(qiáng),這是機(jī)器學(xué)習(xí)中一個(gè)常用的概念
????# 對(duì)于測試集來說,因?yàn)椴恍枰?xùn)練,所以不需要shuffle
????def __init__(self, filenames, need_shuffle):
????????# 把數(shù)據(jù)讀進(jìn)來
????????all_data = []
????????all_labels = []
????????for filename in filenames:
????????????data, labels = load_data(filename)
????????????# 因?yàn)槲覀円龅氖且粋€(gè)二分類的問題,所以我們只用CIFAR-10的0和1兩個(gè)分類,在這里需要做一個(gè)filter
????????????# 因?yàn)閐ata和labels的數(shù)目是一樣的,所以我們把它們打包到一起
????????????for item, label in zip(data, labels):
????????????????# 如果類別是0,1的話,就把數(shù)據(jù)和label放進(jìn)來
????????????????if label in [0, 1]:
????????????????????all_data.append(item)
????????????????????all_labels.append(label)
????????# 把最后的值合并并且轉(zhuǎn)化為numpy的矩陣
????????self._data = np.vstack(all_data) ????# 從縱向上把數(shù)據(jù)合并到一起,因?yàn)閍ll_data定義是一個(gè)一個(gè)向量
????????self._labels = np.hstack(all_labels) ?# 從橫向上合并到一起,因?yàn)閘abel實(shí)際上是一個(gè)一維向量
????????# 測試
????????print(self._data.shape)
????????print(self._labels.shape)
????
????????self._num_examples = self._data.shape[0] ?# 數(shù)量
????????self._need_shuffle = need_shuffle ??# shuffle開關(guān)
????????self._indicator = 0 ??# 表示訓(xùn)練集已經(jīng)遍歷到哪個(gè)位置了
????????if self._need_shuffle:
????????????self._shuffle_data()
????
????# 因?yàn)閍ll_data和all_labels都是numpy的數(shù)據(jù)結(jié)構(gòu),所以我們可以用numpy的方法來做
????def _shuffle_data(self):
????????# np.random.permutation這個(gè)函數(shù)會(huì)做一個(gè)混排,從0到_num_examples,如[0, 1, 2, 3, 4, 5] -> [5, 3, 2, 4, 0, 1]
????????p = np.random.permutation(self._num_examples)
????????# p只是得到一個(gè)排列,需要把數(shù)據(jù)放進(jìn)來
????????# _data和_labels應(yīng)該做一樣的shuffle,否則會(huì)錯(cuò)亂
????????self._data = self._data[p]
????????self._labels = self._labels[p]
????????
????def next_batch(self, batch_size):
????????'''return batch_size examples as a batch.'''
????????end_indicator = self._indicator + batch_size ?# 對(duì)應(yīng)于_indicator,這個(gè)表示結(jié)束位置
????????if end_indicator > self._num_examples:
????????????if self._need_shuffle:
????????????????self._shuffle_data()
????????????????self._indicator = 0
????????????????end_indicator = batch_size
????????????else:
????????????????raise Exception('have no more examples')
????????# 當(dāng)end_indicator=batch_size時(shí),如果還比_num_examples大,就需要拋出異常了
????????if end_indicator > self._num_examples:
????????????raise Exception('batch size is larger than all examples')
????????batch_data = self._data[self._indicator: end_indicator] ??# 需要把這個(gè)范圍內(nèi)的數(shù)據(jù)放到結(jié)果中
????????batch_labels = self._labels[self._indicator: end_indicator]
????????self._indicator = end_indicator
????????return batch_data, batch_labels
?
train_filenames = [os.path.join(CIFAR_DIR, 'data_batch_%d' % i) for i in range(1,6)]
test_filenames = [os.path.join(CIFAR_DIR, 'test_batch')]
?
train_data = CifarData(train_filenames, True)
查看全部 -
1.# 為了使函數(shù)具有更好的泛化能力,定義一個(gè)load_data
# 用于從pickle文件將數(shù)據(jù)讀取進(jìn)來
def load_data(filename):
????'''read data from data file.'''
????with open(filename, 'rb') as f:
????????data = cPickle.load(f, encoding='bytes')
????????return data[b'data'], data[b'labels']
?
# 先搭建tensorflow計(jì)算圖,再執(zhí)行
x = tf.placeholder(tf.float32, [None, 3072]) ????# None表示可變性
# [None]
y = tf.placeholder(tf.int64, [None]) ????
?
# (3072, 1)
w = tf.get_variable('w', [x.get_shape()[-1], 1], ??# 因?yàn)槭嵌诸?,所以只有一個(gè)輸出結(jié)果,定義為1
???????????????????initializer=tf.random_normal_initializer(0, 1)) ??#initializer表示初始化,這里使用正態(tài)分布,均值為0,方差為1
# (1, )
b = tf.get_variable('b', [1],
???????????????????initializer=tf.constant_initializer(0.0)) ??# b使用常量初始化
# get_variable表示獲取變量,如果已經(jīng)定義好了就使用,如果沒有就定義
?
# [None, 3072] * [3072, 1] = [None, 1]
y_ = tf.matmul(x, w) + b
# [None, 1]
p_y_1 = tf.nn.sigmoid(y_) ??# 概率值
# 因?yàn)閥維度不一樣,所以需要進(jìn)行一下reshape
# [None, 1]
y_reshaped = tf.reshape(y, (-1, 1))
y_reshaped_float = tf.cast(y_reshaped, tf.float32)
?
# 用平方差作為損失函數(shù)
loss = tf.reduce_mean(tf.square(y_reshaped_float - p_y_1)) ??# ?類型不一致需要變換
?
predict = p_y_1 > 0.5 ???# true:1 ??false:0
# [1, 0, 1, 1, 0, 1,...]
correct_prediction = tf.equal(tf.cast(predict, tf.int64), y_reshaped) ??# bool
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float64))
?
# 定義梯度下降的方法
with tf.name_scope('train_op'):
????train_op = tf.train.AdamOptimizer(1e-3).minimize(loss) ???# 最小化loss,到這里,計(jì)算圖構(gòu)建完成
查看全部 -
1.?神經(jīng)元的Tensorflow實(shí)現(xiàn):
使用的數(shù)據(jù)集是:CIFAR-10
The CIFAR-10 dataset consists of 60000 32x32 colour images in 10 classes, with 6000 images per class. There are 50000 training images and 10000 test images.?
?

CIFAR-10文件里是python版本的文件,所以它們是pickle的數(shù)據(jù)格式。如果想要檢查里面的文件格式是什么,需要導(dǎo)入cPickle,因?yàn)槔锩娴臄?shù)據(jù)使用numpy存的,所以需要導(dǎo)入numpy。
2.jupyter notebook可以使用tab鍵補(bǔ)全變量名。
3.加載數(shù)據(jù)集:
import _pickle as cPickleimport numpy as np
import os
?
CIFAR_DIR = './cifar-10-batches-py'
print(os.listdir(CIFAR_DIR))
?
with open(os.path.join(CIFAR_DIR, 'data_batch_1'), 'rb') as f:
????data = cPickle.load(f, encoding='bytes')
????print(type(data))
????print(data.keys())
????print(type(data[b'data']))
????print(type(data[b'labels']))
????print(type(data[b'batch_label']))
????print(type(data[b'filenames']))
????print(data[b'data'].shape)
????print(data[b'data'][0:2])
????print(data[b'labels'][0:2])
????print(data[b'batch_label'])
????print(data[b'filenames'][0:2])
????
# 32 * 32 = 1024 * 3 = 3072
# RR-GG-BB = 3072
?
image_arr = data[b'data'][100]
image_arr = image_arr.reshape((3, 32, 32)) ???# 32 32 3 三通道不一致,所以需要再做一下變換,如果解析的時(shí)候順序不對(duì),那么報(bào)錯(cuò)
image_arr = image_arr.transpose((1, 2, 0)) ???# 把1,2位置上的往前放,把0位置上的放在最后,如果通道順序不對(duì),那么圖片的方向會(huì)發(fā)生變化
?
import matplotlib.pyplot as plt ?????# 顯示圖像的庫
from matplotlib.pyplot import imshow
%matplotlib inline ?????# 這樣可以直接顯示在notebook上,而不是再打開一個(gè)另外的框
?
imshow(image_arr) ???# 顯示圖片
查看全部 -
1.?如何調(diào)整神經(jīng)網(wǎng)絡(luò)使得目標(biāo)函數(shù)最小呢?在這里,我們不能像解方程一樣神經(jīng)網(wǎng)絡(luò)參數(shù)解出來,找到最優(yōu)參數(shù),為什么呢?第一個(gè)因?yàn)楝F(xiàn)在的參數(shù)數(shù)目眾多,求解起來會(huì)非常的耗時(shí);第二點(diǎn)是因?yàn)榧s束條件是數(shù)據(jù),就是說我們要在數(shù)據(jù)集上調(diào)整參數(shù)使得目標(biāo)函數(shù)最小,但是對(duì)于很多的機(jī)器學(xué)習(xí)應(yīng)用來說,它的數(shù)據(jù)是變化的,比如說很多應(yīng)用都采集不同的數(shù)據(jù),每天都有增加,今天數(shù)據(jù)集上的最優(yōu)參數(shù)可能到明天就不是最優(yōu)了,所以導(dǎo)致我們不能用直接求解的方式。那么如何求呢?
下山算法:找到方向,走一步。
神經(jīng)網(wǎng)絡(luò)中有類似的算法,叫做梯度下降算法。

在這個(gè)過程中,影響最大的參數(shù)是α,這是一個(gè)預(yù)先設(shè)定好的值,當(dāng)然可以在訓(xùn)練過程中不斷去調(diào)整,但這不是學(xué)習(xí)出來的,而是人為設(shè)置的。它的大小完完全全影響著整個(gè)網(wǎng)絡(luò)的學(xué)習(xí)程度:

2 Tensorflow介紹:
Google Brain的第二代機(jī)器學(xué)習(xí)框架
開源社區(qū)活躍
可擴(kuò)展性好,在分布式下支持的特別好,可以很輕松地用tensorflow擴(kuò)展到多臺(tái)機(jī)器上,一機(jī)一卡擴(kuò)展到一機(jī)多卡或者多機(jī)多卡這樣的情況
API健全,對(duì)用戶友好
3.?計(jì)算圖模型:


為什么要講計(jì)算圖模型呢?因?yàn)樗颓蠼馍窠?jīng)網(wǎng)絡(luò)是有關(guān)系的的。神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)是定義好的,但是它的輸入x是用戶自己產(chǎn)生的,所以我們?cè)诙x神經(jīng)網(wǎng)絡(luò)的時(shí)候并不知道數(shù)據(jù)是什么,我們要在定義好神經(jīng)網(wǎng)絡(luò)之后才可以把數(shù)據(jù)輸入進(jìn)來,才可以求解,去調(diào)整神經(jīng)網(wǎng)絡(luò)參數(shù),使神經(jīng)網(wǎng)絡(luò)可以符合這個(gè)數(shù)據(jù),所以這是tensorflow使用計(jì)算圖模型的一個(gè)基礎(chǔ)。
查看全部 -
1.?多分類邏輯斯底回歸模型:——多個(gè)神經(jīng)元
?一個(gè)神經(jīng)元需要一個(gè)W,兩個(gè)神經(jīng)元需要兩個(gè)W,所以由向量擴(kuò)展成矩陣。
2.?多分類問題比二分類問題具有更廣泛的適用性。
?


?
3.?多分類和二分類的邏輯斯蒂回歸模型也可以被認(rèn)為是神經(jīng)網(wǎng)絡(luò)。
4.?如何調(diào)整神經(jīng)網(wǎng)絡(luò)可以使神經(jīng)網(wǎng)絡(luò)學(xué)到數(shù)據(jù)中的規(guī)律?
目標(biāo)函數(shù):衡量對(duì)數(shù)據(jù)的擬合程度,在機(jī)器學(xué)習(xí)領(lǐng)域中通常也被稱為損失函數(shù)。舉例:
?
(1)平方差損失

(2)交叉熵?fù)p失
?神經(jīng)網(wǎng)絡(luò)訓(xùn)練:調(diào)整參數(shù)使模型在訓(xùn)練集上的損失函數(shù)最小。
查看全部 -
1.?邏輯斯底回歸模型在深度學(xué)習(xí)出現(xiàn)之前是最賺錢的一個(gè)算法。為什么最賺錢呢?因?yàn)榘俣?、谷歌的主要現(xiàn)金業(yè)務(wù)廣告點(diǎn)擊率預(yù)估在深度學(xué)習(xí)出現(xiàn)之前就用的這個(gè)模型,所以說是最賺錢的。
2.?神經(jīng)元——最小的神經(jīng)網(wǎng)絡(luò)
?


?
如上圖所示,W和b定義的是一個(gè)分類線或分類面,看下圖:
?3.二分類邏輯斯底回歸模型:
查看全部 -
1.?機(jī)器學(xué)習(xí)是什么——無序數(shù)據(jù)轉(zhuǎn)化為價(jià)值的方法
機(jī)器學(xué)習(xí)價(jià)值——從數(shù)據(jù)中抽取規(guī)律,并用來預(yù)測未來
2.?機(jī)器學(xué)習(xí)應(yīng)用舉例:
分類問題——圖像識(shí)別、垃圾郵件識(shí)別
回歸問題——股價(jià)預(yù)測、房價(jià)預(yù)測
(分類問題給出的是一個(gè)label,而回歸問題給出的是一個(gè)實(shí)數(shù))
排序問題——點(diǎn)擊率預(yù)估、推薦
生成問題——圖像生成、圖像風(fēng)格轉(zhuǎn)換、圖像文字描述生成
3.?機(jī)器學(xué)習(xí)應(yīng)用流程:
?4.?.機(jī)器學(xué)習(xí)崗位職責(zé):
數(shù)據(jù)處理(采集+去噪)
模型訓(xùn)練(特征+模型)
模型評(píng)估與優(yōu)化(MSE、F1-Score、AUC+調(diào)參)
模型應(yīng)用(A/B測試)
5.
?6.深度學(xué)習(xí)與機(jī)器學(xué)習(xí):
機(jī)器學(xué)習(xí)是實(shí)現(xiàn)人工智能的方法。
深度學(xué)習(xí)是實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的技術(shù)。深度學(xué)習(xí)的算法實(shí)際上可以用機(jī)器學(xué)習(xí)其他算法實(shí)現(xiàn),但是深度學(xué)習(xí)可以結(jié)合大數(shù)據(jù)使算法達(dá)到更好的效果,這是其他算法不能達(dá)到的。
7.?深度學(xué)習(xí)算法集合:
卷積神經(jīng)網(wǎng)絡(luò):圖像生成、圖像分類等
循環(huán)神經(jīng)網(wǎng)絡(luò):用來處理不定長數(shù)據(jù)的。不定長數(shù)據(jù)指的是輸入的長度是不一樣的。比如說它可以是文本數(shù)據(jù),比如說一個(gè)文本分類問題。
(循環(huán)神經(jīng)網(wǎng)絡(luò)在NLP領(lǐng)域使用的比較廣泛,卷積神經(jīng)網(wǎng)絡(luò)在CV領(lǐng)域使用的比較廣泛)
自動(dòng)編碼器
稀疏編碼
深度信念網(wǎng)絡(luò)、限制波爾茲曼機(jī)
深度學(xué)習(xí)+強(qiáng)化學(xué)習(xí)=深度強(qiáng)化學(xué)習(xí)(交叉領(lǐng)域):alpha-go等
8.?深度學(xué)習(xí)進(jìn)展:
圖像分類:IMAGENET比賽
機(jī)器翻譯:循環(huán)神經(jīng)網(wǎng)絡(luò)加了attention
圖像生成:轉(zhuǎn)換,上色可以幫助二次元漫畫家上色、字體、圖像特性化
AlphaGo:CNN
查看全部 -

梯度下降法
學(xué)習(xí)率相當(dāng)于步長
查看全部 -
單個(gè)神經(jīng)元->sigmod(激活函數(shù))->二分類邏輯斯蒂回歸模型
多輸出神經(jīng)元->softmax->多分類邏輯斯蒂回歸模型

目標(biāo)函數(shù):衡量對(duì)數(shù)據(jù)的擬合程度(損失)

神經(jīng)網(wǎng)絡(luò)訓(xùn)練目的:調(diào)整參數(shù),使模型在訓(xùn)練集上的損失函數(shù)最小
查看全部 -

機(jī)器學(xué)習(xí)是什么:無序數(shù)據(jù)轉(zhuǎn)化為價(jià)值的方法
機(jī)器學(xué)習(xí)價(jià)值:從數(shù)據(jù)中抽取規(guī)律,并用來預(yù)測未來
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)子方向
機(jī)器學(xué)習(xí)是實(shí)現(xiàn)人工智能的方法
深度學(xué)習(xí)是實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的技術(shù)
深度學(xué)習(xí)算法集合:
????????卷積神經(jīng)網(wǎng)絡(luò)(CNN)
????????循環(huán)神經(jīng)網(wǎng)絡(luò)(處理不定長數(shù)據(jù))
????????自動(dòng)編碼器、稀疏編碼、深度信念網(wǎng)絡(luò)、限制玻爾茲曼機(jī)
查看全部
舉報(bào)