TFLearn Input_data ja täysin liitetty

Tflearn Input_data Fully_connected



# Syöttötiedot

[input_data-selitys] ( http://tflearn.org/layers/core/#input-data )



[input_data lähdekoodi] ( https://github.com/tflearn/tflearn/blob/master/tflearn/layers/core.py )



def input_data(shape=None, placeholder=None, dtype=tf.float32, data_preprocessing=None, data_augmentation=None, name='InputData'): ''' Input Data. Input: List of `int` (Shape), to create a new placeholder. Or `Tensor` (Placeholder), to use an existing placeholder. Output: Placeholder Tensor with given shape. '''

## input_data.shape



Funktiota input_data käytetään määrittelemään syöttökerros paikkamerkkinä edustamaan syötetietojen rakennetta mallissa. Yleensä parametrien muoto ja nimi ovat pääasiassa mukana, ja muut parametrit voivat olla oletusarvoja.

Esimerkiksi input_data määrittelee matriisin ilman rajoituksia ensimmäiselle ulottuvuudelle ja toinen ulottuvuus on 1.

g = tflearn.input_data(shape=[None, 1]) g = tflearn.fully_connected(g, 128, activation='linear') g = tflearn.fully_connected(g, 128, activation='linear') g = tflearn.fully_connected(g, 1, activation='sigmoid')

Toisessa esimerkissä input_data määrittelee None * 32 * 32 * 3 -ulotteisen matriisin, joka asettaa rajoituksen tuloparametreille.



# Build network network = input_data(shape=[None, 32, 32, 3], dtype=tf.float32) network = conv_2d(network, 32, 3, activation='relu') network = max_pool_2d(network, 2) network = conv_2d(network, 64, 3, activation='relu') network = conv_2d(network, 64, 3, activation='relu') network = max_pool_2d(network, 2) network = fully_connected(network, 512, activation='relu') network = dropout(network, 0.5) network = fully_connected(network, 10, activation='softmax') network = regression(network, optimizer='adam', loss='categorical_crossentropy', learning_rate=0.001)

## input_data.name

Nimi-parametri ilmaisee syötekerroksen nimen

network = tflearn.input_data(shape=[None, 784], name='input') network = self.make_core_network(network) network = regression(network, optimizer='adam', learning_rate=0.01, loss='categorical_crossentropy', name='target')

# täysin_kytketty täysin yhdistetty taso

[täysin_kytketty selitys] ( http://tflearn.org/layers/core/#fully-connected )

[täysin liitetty lähdekoodi] ( https://github.com/tflearn/tflearn/blob/master/tflearn/layers/core.py )

def fully_connected(incoming, n_units, activation='linear', bias=True, weights_init='truncated_normal', bias_init='zeros', regularizer=None, weight_decay=0.001, trainable=True, restore=True, reuse=False, scope=None, name='FullyConnected'):

## Täysin yhdistetyn kerroksen tulkinta

** Täysin yhdistetty kerros **: Jokainen solmu on liitetty kaikkiin edellisen kerroksen solmuihin purettujen ominaisuuksien syntetisoimiseksi.

** Täysin yhdistettyjen kerrosten rooli **: Konvoluutioisen hermoverkon lopussa esiintyy usein yksi tai kaksi täysin yhdistettyä kerrosta. Täysin kytketty muuntaa konvoluution avulla tuotetun kaksiulotteisen piirustekartan yleensä yksiulotteiseksi vektoriksi. Koska perinteinen verkkolähtö on luokittelu, toisin sanoen useiden luokkien todennäköisyys on jopa numeroluokan numero, täysin kytketty kerros on erittäin puhdistettu ominaisuus, joka on kätevä lopulliselle luokittelijalle tai regressiolle.

** Täysin yhdistetyn kerroksen ominaisuudet **:

MLP on täysin kytketty kerros. CNN on paikallinen yhdistetty kerros.
Joten voimme sanoa, että täysin yhdistetyn kerroksen ominaisuus on, että painoja ei ole.
Yhteystapa on pisteestä pisteeseen
Aloittelijoiden mielestä 1x1-suodatinkoko on täysin kytketty


## Kuinka määrittää, onko täysin kytketty kerros
* Neuroniliitännät (pisteestä pisteeseen -yhteydet) ovat täysin yhteydessä. (Itse asiassa se on MLP)
* Suodattimella varustetussa verkossa ei suodattimen kokoa, vaan lähdön ominaisuuskartan kokoa. Jos lähtöominaisuuskartan koko on 1x1xN, tämä kerros on täysin yhdistetty kerros.

## Tarkenna toista tuomintamenetelmää:
1. Suodattimen koko 1x1 ei ole välttämättä täysin kytketty. Esimerkiksi syöttökoko on 10x10x100, suodattimen koko on 1x1x100, toista 50 kertaa, sitten kerroksen kokonaispainot ovat: 1x1x100x50.

2. Jos suodatinkoko 1x1 on täysin kytketty, tulokoon on oltava 1x1. Olemme esittäneet tämän aikaisemmin käytettäessä matconvnet-verkkoa. Jos fc: n syöttökoko ei ole 1x1, tapahtuu virhe.

3. Kun tulokoko on 10x10, se on täysin kytketty: tässä meidän ulostulokoon on oltava 1x1 ja suodatinkoon on oltava 10x10.

Siksi voimme myös tiivistää toisen kohdan seuraavasti:
suodatinkoko, joka on yhtä suuri kuin tulokoko, on täysin kytketty.

## Miksi 1 * 1 ei ole välttämättä täysin kytketty
* Kun suodattimen koko on yhtä suuri kuin Convolutionin tulokoko, se on täysin kytketty ja ulostulokoko on tällä hetkellä 1x1xN.
* Kun 1x1 ei ole yhtä suuri kuin syötekoko, 1x1 pystyy myös jakamaan painot.

[täysin kytketty ja paikallisesti kytketty referenssiartikkeli] (https://blog.csdn.net/qq_20259459/article/details/70598929)

[Selitä täysin yhdistetty kerros] (https://blog.csdn.net/u011021773/article/details/78121359)