විසංයෝජන ස්ථර යනු කුමක්ද?


213

මම මෑතකදී ජොනතන් ලෝන්ග්, ඉවාන් ෂෙල්හාමර්, ට්‍රෙවර් ඩැරල් විසින් අර්ථකථන ඛණ්ඩනය සඳහා පූර්ණ සම්මුතිවාදී ජාල කියවා ඇත්තෙමි. "විසංයෝජන ස්ථර" කරන්නේ කුමක්ද / ඒවා ක්‍රියා කරන්නේ කෙසේද යන්න මට තේරෙන්නේ නැත.

අදාළ කොටස වේ

3.3. උඩු යටිකුරු කිරීම යනු පසුගාමී පියවරකි

රළු නිමැවුම් p න පික්සෙල් සමඟ සම්බන්ධ කළ හැකි තවත් ක්‍රමයක් වන්නේ අන්තර් මැදිහත්වීමයි. නිදසුනක් ලෙස, සරල බිලිනියර් අන්තර් මැදිහත්වීම රේඛීය සිතියමක් මඟින් ආසන්නතම යෙදවුම් හතරෙන් එක් එක් ප්‍රතිදානය ගණනය කරයි yමමj, එය ආදාන සහ ප්‍රතිදාන සෛලවල සාපේක්ෂ පිහිටීම් මත පමණක් රඳා පවතී.
එක් අතකින්, සාධකය සමඟ ඉහළට ඔසවා තැබීම යනු 1 / f හි භාගික ආදාන පියවරක් සමඟ සම්මුතියකි . සමෝධානික වන තාක් කල් , උඩු යටිකුරු කිරීම සඳහා ස්වාභාවික ක්‍රමයක් වන්නේ හි නිමැවුම් පියවරක් සහිත පසුගාමී සම්මුතියයි (සමහර විට එය විසංයෝජනය ලෙස හැඳින්වේ) . එවැනි මෙහෙයුමක් ක්‍රියාත්මක කිරීම සුළුපටු ය, මන්ද යත් එය හුදෙක් ඉදිරියට යාමේ හා පසුගාමී ගමන් මඟ හරවා යැවීමෙනි.f ffff
මේ අනුව, පික්සෙල්වේස් අලාභයෙන් පසු විපරම් කිරීම මඟින් අන්තයේ සිට අවසානය දක්වා ඉගෙනීම සඳහා ජාලය තුළ උපසිරැසි සිදු කරනු ලැබේ.
එවැනි ස්ථරයක විසංයෝජන පෙරණය සවි කිරීම අවශ්‍ය නොවන බව සලකන්න (උදා: බිලිනියර් උඩුගත කිරීම සඳහා), නමුත් එය ඉගෙන ගත හැකිය. විසංයෝජන ස්ථර රාශියක් සහ සක්‍රිය කිරීමේ කාර්යයන් මඟින් රේඛීය නොවන ඉහළ නැගීමක් පවා ඉගෙන ගත හැකිය.
අපගේ අත්හදා බැලීම් වලදී, network න අනාවැකි ඉගෙනීම සඳහා ජාලය තුළ ඉහළ නැංවීම වේගවත් හා effective ලදායී බව අපට පෙනී යයි. අපගේ හොඳම ඛණ්ඩනය කිරීමේ ගෘහ නිර්මාණ ශිල්පය 4.2 වගන්තියේ පිරිපහදු කළ අනාවැකි සඳහා ඉහළ මට්ටමක ඉගෙනීමට මෙම ස්ථර භාවිතා කරයි.

සම්මුතිවාදී ස්ථර පුහුණු කරන්නේ කෙසේදැයි මට වැටහී ඇතැයි මම නොසිතමි.

මා සිතන පරිදි, කර්නල් ප්‍රමාණයේ සහිත සංවහන ස්ථර ප්‍රමාණයේ පෙරහන් ඉගෙන ගනී . සහ ෆිල්ටර වල කර්නල් ප්‍රමාණය , ස්ට්‍රයිඩ් සමඟ සංවර්‍ධන ස්ථරයක ප්‍රතිදානය මානය . කෙසේ වෙතත්, ඒත්තු ගැන්වීමේ ස්ථර ඉගෙනීම ක්‍රියා කරන්නේ කෙසේදැයි මම නොදනිමි. (එම්එල්පී කාර්‍යයන් ශ්‍රේණියේ සම්භවයක් සහිතව ඉගෙන ගන්නේ කෙසේද යන්න මට වැටහේ.k × k k s N n ආදාන අඳුරුkk×kksඑන්nආදාන අඳුරුs2n

එබැවින්, සංවර්‍ධන ස්ථර පිළිබඳ මගේ අවබෝධය නිවැරදි නම්, මෙය ආපසු හැරවිය හැකි ආකාරය පිළිබඳ කිසිදු හෝඩුවාවක් මා සතුව නොමැත.

විකේතනීය ස්ථර තේරුම් ගැනීමට කරුණාකර කිසිවෙකුට මට උදව් කළ හැකිද?


5
මෙම වීඩියෝ දේශනය විසංයෝජනය /
උපසිරැසි ගැන්වීම

7
එය ඕනෑම කෙනෙකුට ප්‍රයෝජනවත් වේ යැයි සිතමින් මම ටෙන්සර් ෆ්ලෝ (0.11) හි සම්මුතිය සහ පාරදෘශ්‍ය සම්මුතිය භාවිතා කළ හැකි ආකාරය ගවේෂණය කිරීම සඳහා සටහන් පොතක් සාදන ලදී . සමහර විට ප්‍රායෝගික උදාහරණ සහ සංඛ්‍යා තිබීම ඒවා ක්‍රියා කරන ආකාරය තේරුම් ගැනීමට තව ටිකක් උපකාරී වේ.
අකිරෝස්

2
මට නම්, මෙම පිටුව මට වඩා හොඳ පැහැදිලි කිරීමක් ලබා දී ඇති අතර එය විසංයෝජනය සහ පාරදෘශ්‍යතාව
T.Antoni

පරාමිතීන් නොමැති බැවින්, පසුපසට තල්ලු කිරීම මෙන් පසුපසට තටාකයට වඩා ඉහළට නැගීම නොවේද?
කෙන් ෆෙලිං

සටහන: මෙම ස්ථරය නැති නිසා නම "deconvolutional ස්ථරය" නොමඟ යවන නොවේ ඉටු deconvolution .
user76284

Answers:


237

Deconvolution ස්ථරය ඉතාම අවාසනාවන්ත නම හා වෙනුවට කැඳවා කළ යුතු transposed convolutional ස්ථරය .

දෘශ්යමය වශයෙන්, පඩිපෙළක් නොමැති හා විනිවිද පෙනෙන සංවර්‍ධනයක් සඳහා, අපි මුල් ආදානය (නිල් ඇතුළත් කිරීම්) ශුන්යයන් (සුදු ඇතුළත් කිරීම්) සමඟ පෑඩ් කරමු (රූපය 1).

රූපය 1

දෙවන පියවර සහ පෑඩින් කිරීමේදී, පාරදෘශ්‍ය සම්මුතිය මේ ආකාරයෙන් පෙනේ (රූපය 2):

රූපය 2

ඔබ convolutional arithmetics තවත් (මහා) visualisations සොයා ගත හැකි මෙහි .


21
මා එය තේරුම් ගෙන ඇති බව තහවුරු කර ගැනීම සඳහා: "විසංයෝජනය" යනු සම්මුතියට සමාන ය, නමුත් ඔබ පෑඩින් ටිකක් එකතු කරනවාද? (රූපය වටා / විට s> 1 ද එක් එක් පික්සෙල් වටා)?
මාටින් තෝමා

23
ඔව්, විසංයෝජන ස්තරයක් ද ඒත්තු ගැන්වීම සිදු කරයි! පාරදෘශ්‍ය සම්මුතිය නමට වඩා හොඳින් ගැලපෙන අතර විසංයෝජනය යන පදය ඇත්ත වශයෙන්ම නොමඟ යවන සුළුය.
ඩේවිඩ් ඩාවෝ

16
රූප සටහන 1 හි “පැඩින් කිරීමක් නැත” යැයි ඔබ කියන්නේ ඇයි?
ස්ටාස් එස්

12
මෙම ඉතා බුද්ධිමත් පිළිතුරට ස්තූතියි, නමුත් දෙවැන්න 'ස්ට්‍රයිඩ් ටූ' නඩුව වන්නේ මන්ද යන්න පිළිබඳව මම ව්‍යාකූල වී සිටිමි, කර්නලය චලනය වන විට එය හරියටම පළමු ආකාරයටම ක්‍රියා කරයි.
ඩිමොන්ජ්

11
මෙය තවමත් ඉතා ව්‍යාකූල ය. පඩිපෙළ, පෑඩින් කිරීම සහ පාරදෘශ්‍යතාවය ක්‍රියාකාරිත්වයට බලපාන්නේ කෙසේදැයි මට නොපෙනේ ... පළමු gif හි ශුන්‍ය පෑඩින් ඇති නමුත් ඔබ පැවසුවේ පෑඩින් නොමැති බවයි. දෙවන gif එක 1 ක පියවරක් භාවිතා කරයි, ඔබ කීවේ පියවර දෙකයි.
කුතුහලය දනවන

50

මම සිතන්නේ ඒත්තු ගැන්වීම පිටුපස ඇති මූලික මට්ටමේ බුද්ධියක් ලබා ගත හැකි එක් ක්‍රමයක් නම්, ඔබ කේ ෆිල්ටර ලිස්සා යාමයි, එය ඔබට කේ ස්ටෙන්සිල් ලෙස සිතිය හැකි, ආදාන රූපයට ඉහළින් සහ කේ සක්‍රිය කිරීම් නිපදවයි - සෑම එකක්ම විශේෂිත ස්ටෙන්සිල් සමඟ ගැලපෙන තරම නියෝජනය කරයි . එහි ප්‍රතිලෝම මෙහෙයුම වනුයේ K සක්‍රිය කර ඒවා සම්මුති මෙහෙයුමේ පූර්විකාව දක්වා පුළුල් කිරීමයි. ප්‍රතිලෝම මෙහෙයුමේ ප්‍රතිභාන පැහැදිලි කිරීම, දළ වශයෙන්, ස්ටෙන්සිල් (ෆිල්ටර්) සහ සක්‍රිය කිරීම් (එක් එක් ස්ටෙන්සිල් සඳහා ගැලපෙන තරම) ලබා දී ඇති රූප ප්‍රතිනිර්මාණය වන අතර එම නිසා මූලික බුද්ධිමය මට්ටමින් අපට අවශ්‍ය වන්නේ එක් එක් සක්‍රියතාවය ස්ටෙන්සිල් ආවරණ මගින් පුපුරවා හැරීමට ය. ඒවා එකතු කරන්න.

අවබෝධ කර ගැනීමේ deconv වෙත ළඟා විය හැකි තවත් ක්‍රමයක් නම් කැෆේහි විසංයෝජන ස්ථර ක්‍රියාත්මක කිරීම පරීක්ෂා කිරීම, පහත දැක්වෙන අදාළ කේතයන් බලන්න:

DeconvolutionLayer<Dtype>::Forward_gpu
ConvolutionLayer<Dtype>::Backward_gpu
CuDNNConvolutionLayer<Dtype>::Backward_gpu
BaseConvolutionLayer<Dtype>::backward_cpu_gemm

නිත්‍ය ඉදිරි සංවහන ස්ථරයක පසුබිම ලෙස එය හරියටම කැෆේහි ක්‍රියාත්මක කර ඇති බව ඔබට පෙනෙනු ඇත (මට එය වඩාත් පැහැදිලිව පෙනුනේ මම cuDNN conv layer vs ConvolutionLayer :: GEMM භාවිතයෙන් ක්‍රියාත්මක කරන ලද Backward_gpu හි බැක්ප්‍රොප් ක්‍රියාත්මක කිරීම සංසන්දනය කිරීමෙන් පසුවය). එබැවින් නිතිපතා ඒත්තු ගැන්වීම සඳහා පසුබිම්කරණය සිදු කරන්නේ කෙසේද යන්න පිළිබඳව ඔබ කටයුතු කරන්නේ නම්, යාන්ත්‍රික ගණනය කිරීමේ මට්ටමින් කුමක් සිදුවේදැයි ඔබට වැටහෙනු ඇත. මෙම ගණනය කිරීම ක්‍රියා කරන ආකාරය මෙම බොඳවීමේ පළමු ඡේදයේ විස්තර කර ඇති ප්‍රතිභාවට ගැලපේ.

කෙසේ වෙතත්, ඒත්තු ගැන්වීමේ ස්ථර ඉගෙනීම ක්‍රියා කරන්නේ කෙසේදැයි මම නොදනිමි. (එම්එල්පී කාර්‍යයන් ශ්‍රේණියේ සම්භවයක් සහිතව ඉගෙන ගන්නේ කෙසේද යන්න මට වැටහේ.

ඔබේ පළමු ප්‍රශ්නය තුළ ඔබේ අනෙක් ප්‍රශ්නයට පිළිතුරු සැපයීම සඳහා, එම්එල්පී පසුපෙළකරණය (සම්පුර්ණයෙන්ම සම්බන්ධිත ස්තරය) සහ සම්මුතිවාදී දැල් අතර ප්‍රධාන වෙනස්කම් දෙකක් තිබේ:

1) පඩි වල බලපෑම දේශීයකරණය වී ඇත, එබැවින් මුලින් බැක්ප්‍රොප් කරන්නේ කෙසේදැයි සොයා බලන්න, ආදාන රූපයක කුඩා 3x3 ප්‍රදේශයක් සමඟ 3x3 ෆිල්ටරයක් ​​කැටි කොට ප්‍රති result ල රූපයේ තනි ලක්ෂ්‍යයකට සිතියම් ගත කරන්න.

2) අවකාශීය වෙනස්වීම සඳහා සම්මුති පෙරහන් වල බර බෙදා ගැනේ. ප්‍රායෝගිකව මෙයින් අදහස් කරන්නේ, ඉදිරි මුරපදයේ දී එකම බර සහිත එකම 3x3 ෆිල්ටරය ප්‍රතිදාන රූපය ලබා දීම සඳහා ඉදිරි ගණනය කිරීම සඳහා එකම බර සහිත මුළු රූපය හරහා ඇදගෙන යාමයි (එම පෙරණය සඳහා). බැක්ප්‍රොප් සඳහා මෙයින් අදහස් කරන්නේ, ප්‍රභව රූපයේ එක් එක් ලක්ෂ්‍යය සඳහා පසුබිම් ප්‍රමිතීන් සාරාංශගත කර ඇති අතර, අපි එම පෙරණය ඉදිරි මුරපදය තුළට ඇදගෙන ගිය මුළු පරාසය පුරා ය. DLoss / dx පසු විපරම් කළ යුතු බැවින් අලාභ wrt x, w සහ නැඹුරුවෙහි විවිධ ප්‍රමිතීන් ද ඇති බව සලකන්න. DLoss / dw යනු අප බර යාවත්කාලීන කරන ආකාරයයි. w සහ නැඹුරුව යනු DAG ගණනය කිරීමේ ස්වාධීන යෙදවුම් වේ (පෙර යෙදවුම් නොමැත), එබැවින් ඒවා මත පසු විපරම් කිරීම අවශ්‍ය නොවේ.

(my notation here assumes that convolution is y = x*w+b where '*' is the convolution operation)

7
මෙම ප්‍රශ්නයට හොඳම පිළිතුර මෙය යැයි මම සිතමි.
kli_nlpr

8
මෙය හොඳම පිළිතුර බව මම එකඟ වෙමි. ඉහළ පිළිතුරේ ලස්සන සජීවිකරණ ඇත, නමුත් මම මෙම පිළිතුර කියවන තුරු ඒවා මට අත්තනෝමතික ලෙස පෑඩින් කිරීම සමඟ සාමාන්‍ය කැටි ගැසීම් මෙන් පෙනුනි. අහෝ මිනිසුන් ඇස කැන්ඩි වලින් ගිලිහී යන්නේ කෙසේද.
රේයි නකානෝ

1
එකඟ වන්න, පිළිගත් පිළිතුර කිසිවක් පැහැදිලි කර නැත. මෙය වඩා හොඳය.
BjornW

ඔබගේ විශිෂ්ට පැහැදිලි කිරීම සඳහා ස්තූතියි. පසුබිම නිසි ලෙස කරන්නේ කෙසේදැයි මට දැනට සිතාගත නොහැක. කරුණාකර මට ඒ ගැන ඉඟියක් ලබා දිය හැකිද?
බැස්ටියන්

41

පියවරෙන් පියවර ගණිතය මගින් 3x3 ෆිල්ටරය සහ 2 වන පියවර සමඟ 2x උඩුගත කිරීම සිදු කරන්නේ කෙසේද යන්න පැහැදිලි කරයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ගණිතය වලංගු කිරීම සඳහා සරලම ටෙන්සර්ෆ්ලෝ ස්නිපටය:

import tensorflow as tf
import numpy as np

def test_conv2d_transpose():
    # input batch shape = (1, 2, 2, 1) -> (batch_size, height, width, channels) - 2x2x1 image in batch of 1
    x = tf.constant(np.array([[
        [[1], [2]], 
        [[3], [4]]
    ]]), tf.float32)

    # shape = (3, 3, 1, 1) -> (height, width, input_channels, output_channels) - 3x3x1 filter
    f = tf.constant(np.array([
        [[[1]], [[1]], [[1]]], 
        [[[1]], [[1]], [[1]]], 
        [[[1]], [[1]], [[1]]]
    ]), tf.float32)

    conv = tf.nn.conv2d_transpose(x, f, output_shape=(1, 4, 4, 1), strides=[1, 2, 2, 1], padding='SAME')

    with tf.Session() as session:
        result = session.run(conv)

    assert (np.array([[
        [[1.0], [1.0],  [3.0], [2.0]],
        [[1.0], [1.0],  [3.0], [2.0]],
        [[4.0], [4.0], [10.0], [6.0]],
        [[3.0], [3.0],  [7.0], [4.0]]]]) == result).all()

මම හිතන්නේ ඔයාගේ ගණනය මෙතන වැරදියි. අතරමැදි ප්‍රතිදානය 3+ 2 * 2 = 7 විය යුතුය, පසුව 3x3 කර්නලයක් සඳහා අවසාන ප්‍රතිදානය 7-3 + 1 = 5x5 විය යුතුය
ඇලෙක්ස්

කණගාටුයි, lex ඇලෙක්ස්, නමුත් අතරමැදි ප්‍රතිදානය 7 වන්නේ මන්දැයි මට තේරුම් ගැනීමට නොහැකි විය. කරුණාකර ඔබට විස්තාරණය කළ හැකිද?
ඇන්ඩ්‍රීස්

2
@andriys ඔබ පෙන්වා ඇති රූපයේ, අවසාන ප්‍රති result ලය කපන්නේ ඇයි?
ජේම්ස් බොන්ඩ්

@ ජේම්ස්බොන්ඩ් මම හිතන්නේ Conv2DTransposed () හි ඇති පැඩින් පරාමිතිය tensorflow.keras පාලනය කරයි. සමහර විට ප්‍රතිදානය මුල් ප්‍රමාණයෙන් තදින් (ද්විත්ව, ත්‍රිත්ව, ආදිය) තිබීම යෝග්‍ය වේ. මෙම අවස්ථාවේදී, ආදාන ප්‍රමාණය 2x2 (wxh) සිට 4x4 දක්වා.
XX

@ ඇන්ඩ්‍රිස් නිදර්ශනයට ස්තූතියි, ඉතා තොරතුරු. මම මුලින් සිතුවේ උඩුගත කරන ලද ආදාන රූපය (අන්තර් සම්බන්ධිත පේළි සහ 0 තීරු සහිතව) පෙරහන් කර්නලය සමඟ වචනාර්ථයෙන් "සම්පිණ්ඩණය" වී ඇති බවයි. නමුත් සැබෑ ක්‍රියාකාරිත්වය ඔබ කී දෙයට වඩා සමාන ය: කර්නලය ආදාන මූලද්‍රව්‍යවලින් ගුණ කිරීමෙන් අනතුරුව විභව අතිච්ඡාදනය සමඟ ප්‍රතිදානයට “ටයිල්” කරනු ලැබේ (කර්නල් ප්‍රමාණය ස්ට්රයිඩයට වඩා විශාල නම්). මම සිතන්නේ යටින් පවතින ගණිතය සහ ශ්‍රේණියේ පරිගණනය "සාම්ප්‍රදායික" Conv2D මෙහෙයුමට වඩා වෙනස් වනු ඇත.
XX

27

මෙම ස්ටැන්ෆර්ඩ් CS පන්ති CS231n සමඟ බැඳී ඇති සටහන් : දෘශ්ය පිළිගැනීම සඳහා Convolutional ස්නායුක ජාලය, Andrej Karpathy විසින් , convolutional ස්නායු ජාලයන් පැහැදිලි ක විශිෂ්ට රැකියා කරන්න.

මෙම ලිපිය කියවීමෙන් ඔබට දළ අදහසක් ලබා දිය යුතුය:

  • විසංයෝජන ජාලයන් නිව් යෝර්ක් විශ්ව විද්‍යාලයේ කුරන්ට් ආයතනයේ පරිගණක විද්‍යාව පිළිබඳ මැතිව් ඩී. සීලර්, දිලිප් ක්‍රිෂ්ණන්, ග්‍රැහැම් ඩබ්ලිව්. ටේලර් සහ රොබ් ෆර්ගස්.

මෙම විනිවිදක විසංයෝජන ජාල සඳහා විශිෂ්ටයි.


31
එම ඕනෑම සබැඳියක අන්තර්ගතය කෙටි ඡේදයකින් සාරාංශගත කළ හැකිද? වැඩිදුර පර්යේෂණ සඳහා සබැඳි ප්‍රයෝජනවත් විය හැකි නමුත්, ඉතා වැදගත් ලෙස තොග හුවමාරු පිළිතුරකට වෙබ් අඩවියෙන් ඉවත් වීමට අවශ්‍ය නොවී මූලික ප්‍රශ්නය විසඳීමට ප්‍රමාණවත් පෙළක් තිබිය යුතුය.
නීල් ස්ලැටර්

මට කණගාටුයි, නමුත් මෙම පිටුවල අන්තර්ගතය කෙටි ඡේදයකින් සාරාංශ කිරීමට නොහැකි තරම් විශාලය.
අස්රෙල්

13
සම්පූර්ණ සාරාංශයක් අවශ්‍ය නොවේ, ශීර්ෂ පා --යක් - උදා: "විසංයෝජන ස්නායුක ජාලයක් සීඑන්එන් එකකට සමාන ය, නමුත් එය පුහුණු කර ඇති අතර එමඟින් ඕනෑම සැඟවුණු තට්ටුවක ඇති ලක්ෂණ පෙර ස්ථරය ප්‍රතිනිර්මාණය කිරීමට භාවිතා කළ හැකිය (සහ ස්ථර හරහා පුනරාවර්තනය කිරීමෙන්, අවසානයේ ආදානය ප්‍රතිදානයෙන් ප්‍රතිනිර්මාණය කළ හැකිය). ගැටළු සහිත වසමක සාමාන්‍ය ඉහළ මට්ටමේ අංග ඉගෙනීම සඳහා එය අධීක්‍ෂණයෙන් තොරව පුහුණු කිරීමට ඉඩ දෙයි - සාමාන්‍යයෙන් රූප සැකසුම් ”(සටහන එය නිවැරදි දැයි මට විශ්වාස නැත, එබැවින් මගේ ලිවීම නොකෙරේ තමන්ගේම පිළිතුර).
නීල් ස්ලැටර්

6
සබැඳි හොඳ වුවත්, ඔබේම වචන වලින් ආකෘතියේ කෙටි සාරාංශයක් වඩා හොඳ වනු ඇත.
හෙලෝ වර්ල්ඩ්

සබැඳිය තරමක් පැරණි කාර්ය මණ්ඩලයක් බව පෙනේ. ඔබට වචන කිහිපයකින් සාරාංශගත කිරීම වඩා හොඳය. @ ස්ටීවන් රවුච්
යොසරියන් 42

13

මෙම මාතෘකාව පිළිබඳ තියෝන් වෙබ් අඩවියෙන් විශිෂ්ට ලිපියක් හමු විය [1]:

පාරදෘශ්‍ය කැටි ගැසීම්වල අවශ්‍යතාවය සාමාන්‍යයෙන් පැන නගින්නේ සාමාන්‍ය සම්මුතියක ප්‍රතිවිරුද්ධ දිශාවට ගමන් කරන පරිවර්තනයක් භාවිතා කිරීමට ඇති ආශාවෙනි, [...] විශේෂාංග සිතියම් ඉහළ මාන අවකාශයකට ප්‍රක්ෂේපණය කිරීම. [...] එනම්, 4-මාන අවකාශයක සිට 16-මාන අවකාශයකට සිතියම් ගත කරන්න, ඒත්තු ගැන්වීමේ සම්බන්ධතා රටාව තබා ගන්න.

Transposed convolutions - A සංකීර්ණතා ඉදිරි හා පසුගාමී විෂයයන් හුවමාරු විසින් වැඩ - ද යවමින් strided convolutions හමුවිය. එය තැබිය හැකි එක් ක්‍රමයක් නම් කර්නලය මගින් සම්මුතියක් නිර්වචනය කර ඇති නමුත් එය සෘජු සම්මුතියක් හෝ පාරදෘශ්‍ය සම්මුතියක් ද යන්න තීරණය වන්නේ ඉදිරි හා පසුගාමී ගමන් ගණනය කරන්නේ කෙසේද යන්න මත ය.

පාරදෘශ්‍ය කැටි ගැසීමේ මෙහෙයුම එහි ආදානයට සාපේක්ෂව යම් සම්මුතියක ප්‍රමිතිය ලෙස සිතිය හැකිය.

අවසාන වශයෙන් සටහන් කරන්න direct ජු සම්මුතියක් සහිතව පාරදෘශ්‍ය සම්මුතියක් ක්‍රියාත්මක කිරීමට සෑම විටම හැකි බව. අවාසිය නම්, එය සාමාන්‍යයෙන් ආදාන සඳහා බොහෝ තීරු සහ ශුන්‍ය පේළි එකතු කිරීම ඇතුළත් වන අතර එමඟින් කාර්යක්ෂමතාව අඩු ලෙස ක්‍රියාත්මක වේ.

එබැවින් සරල කතා වලදී, “පාරදෘශ්‍ය සම්මුතියක්” යනු ගණිතය (ගණිතය මෙන්) භාවිතා කරන ගණිතමය මෙහෙයුමකි, නමුත් ඔබට සම්මුතිගත අගයන්ගෙන් මුල් (ප්‍රතිවිරුද්ධ දිශාවට) ආපසු යාමට අවශ්‍ය වූ විට නඩුවේ සාමාන්‍ය සම්මුති මෙහෙයුමට වඩා කාර්යක්ෂම වේ. ප්‍රතිවිරුද්ධ දිශාව ගණනය කිරීමේදී ක්‍රියාවට නැංවීමේදී එය වඩාත් සුදුසු වන්නේ එබැවිනි (එනම්, ආදානය පෑඩ් කිරීමෙන් ඇති වන විරල අනුකෘතිය නිසා ඇති වන අනවශ්‍ය 0 ගුණ කිරීම් වළක්වා ගැනීම).

Image ---> convolution ---> Result

Result ---> transposed convolution ---> "originalish Image"

සමහර විට ඔබ ඒත්තු ගැන්වීමේ මාවතේ සමහර අගයන් ඉතිරි කර “ආපසු යන විට” එම තොරතුරු නැවත භාවිතා කරයි:

Result ---> transposed convolution ---> Image

එය වැරදි ලෙස "විසංයෝජනය" ලෙස හැඳින්වීමට හේතුව එය විය හැකිය. කෙසේ වෙතත්, එයට සම්මුතියේ (C ^ T) අනුකෘති පාරදෘශ්‍යතාවයට යම් සම්බන්ධයක් ඇත, එබැවින් වඩාත් සුදුසු නම “පාරදෘශ්‍ය සම්මුතිය”.

එබැවින් පරිගණක පිරිවැය සලකා බැලීමේදී එය බොහෝ අර්ථවත් කරයි. ඔබ පාරදෘශ්‍ය සම්මුතිය භාවිතා නොකරන්නේ නම් ඇමසන් ජීපස් සඳහා ඔබ තවත් බොහෝ දේ ගෙවනු ඇත.

මෙහි ඇති සජීවිකරණ ප්‍රවේශමෙන් කියවා බලන්න: http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html#no-zero-padding-unit-strides-transposed

තවත් අදාළ කියවීම්:

පෙරණයක පාරදෘශ්‍ය (හෝ වඩාත් සාමාන්‍යයෙන්, හර්මිටියානු හෝ සංයුක්ත පාරදෘශ්‍ය) යනු හුදෙක් ගැලපෙන පෙරණයකි [3]. මෙය කර්නලය ආපසු හරවා සියලු අගයන්ගේ සංයුක්තය ගැනීමෙන් [2] සොයාගත හැකිය.

මම ද මේ සඳහා අළුත් වන අතර ඕනෑම ප්‍රතිපෝෂණයක් හෝ නිවැරදි කිරීමක් සඳහා කෘත ful වෙමි.

[1] http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html

[2] http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html#transposed-convolution-arithmetic

[3] https://en.wikipedia.org/wiki/Matched_filter


1
තෝරා ගැනීම, නමුත් සබැඳිය විය යුත්තේ: deeplearning.net/software/theano_versions/dev/tutorial/…
හර්බට්

10

අපට ප්‍රතිසම සඳහා PCA භාවිතා කළ හැකිය.

ඒත්තු ගැන්වීම භාවිතා කරන විට, ඉදිරි මුරපදය යනු ආදාන රූපයෙන් මූලධර්ම සංරචකවල සංගුණක උකහා ගැනීම වන අතර පසුගාමී මුරපදය (ආදානය යාවත්කාලීන කරන) නව ආදාන රූපයක් ප්‍රතිනිර්මාණය කිරීම සඳහා සංගුණක භාවිතා කිරීම (ශ්‍රේණිය) භාවිතා කිරීම ය. නව ආදාන රූපයට අපේක්ෂිත සංගුණකවලට වඩා හොඳින් ගැලපෙන පළාත් සභා සංගුණක ඇත.

Deconv භාවිතා කරන විට, ඉදිරි මුරපදය සහ පසුගාමී මුරපදය ආපසු හරවනු ලැබේ. ඉදිරි මුරපදය පළාත් සභා සංගුණක වලින් රූපයක් ප්‍රතිනිර්මාණය කිරීමට උත්සාහ කරන අතර පසුගාමී මුරපදය මඟින් ලබා දී ඇති පළාත් සභා සංගුණක යාවත්කාලීන කරයි (ශ්‍රේණිය).

Deconv ඉදිරි මුරපදය මෙම ලිපියේ දක්වා ඇති විශ්වාසනීය ශ්‍රේණියේ ගණනය කිරීම් හරියටම කරයි: http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/

ඩෙකොන්ව් හි කැෆේ ක්‍රියාවට නැංවීමේදී (ඇන්ඩ්‍රි පොක්‍රොව්ස්කිගේ පිළිතුර බලන්න), ඩෙකොන්ව් ඉදිරි මුරපදය backward_cpu_gemm () අමතයි, සහ පසුගාමී පාස් ඉදිරි_cpu_gemm () අමතයි.


7

ඩීඑස්පී දෘෂ්ටිකෝණයකින් සම්මුතීන්

මම මේ සඳහා ටිකක් ප්‍රමාද නමුත් තවමත් මගේ ඉදිරිදර්ශනය සහ තීක්ෂ්ණ බුද්ධිය බෙදා ගැනීමට කැමතියි. මගේ පසුබිම න්‍යායාත්මක භෞතික විද්‍යාව සහ ඩිජිටල් සං signal ා සැකසීමයි. විශේෂයෙන් මම තරංග ආයාම අධ්‍යයනය කළ අතර කැටි ගැසීම් මගේ කොඳු නාරටියෙහි තිබේ;)

ගැඹුරු ඉගෙනුම් ප්‍රජාවේ මිනිසුන් කැළඹීම් ගැන කතා කරන ආකාරයද මට ව්‍යාකූල විය. මගේ දෘෂ්ටි කෝණයෙන් බැලූ බැල්මට පෙනෙන දේ නිසි ලෙස වෙන් කිරීමකි. සමහර ඩීඑස්පී මෙවලම් භාවිතයෙන් ගැඹුරු ඉගෙනුම් සංවර්‍ධනයන් මම පැහැදිලි කරමි.

වියාචනය

ප්‍රධාන කරුණු ලබා ගැනීම සඳහා මගේ පැහැදිලි කිරීම් ටිකක් අතින් රැලි සහිත වන අතර ගණිතමය දෘඩ නොවේ.


අර්ථ දැක්වීම්

xn={xn}n=-={,x-1,x0,x1,}

ynxn

(y*x)n=Σk=-yn-kxk

q=(q0,q1,q2)x=(x0,x1,x2,x3)ටී

q*x=(q1q000q2q1q000q2q1q000q2q1)(x0x1x2x3)

kඑන්

kxn=xnk

kk-1

kxn={xn/kn/kඉසෙඩ්0නැතිනම්

k=3

3{,x0,x1,x2,x3,x4,x5,x6,}={,x0,x3,x6,}
3{,x0,x1,x2,}={x0,0,0,x1,0,0,x2,0,0,}

k=2

2x=(x0x2)=(10000010)(x0x1x2x3)

හා

2x=(x00x10)=(10000100)(x0x1)

k=kටී


කොටස් අනුව ගැඹුරු ඉගෙනුම් සම්මුතීන්

qx

  • kk(q*x)
  • k(kq)*x
  • kq*(kx)

q*(kx)=q*(kටීx)=(k(q*)ටී)ටීx

(q*)q

q*(kx)=(q1q000q2q1q000q2q1q000q2q1)(10000100)(x0x1)=(q1q200q0q1q200q0q1q200q0q1)ටී(10000010)ටී(x0x1)=((10000010)(q1q200q0q1q200q0q1q200q0q1))ටී(x0x1)=(k(q*)ටී)ටීx

කෙනෙකුට දැකිය හැකි පරිදි, පාරදෘශ්‍ය මෙහෙයුම, මේ අනුව, නම.

ළඟම අසල්වැසි උපසම්පදාවට සම්බන්ධතාවය

සම්මුතිවාදී ජාලයන්හි දක්නට ලැබෙන තවත් පොදු ප්‍රවේශයක් නම්, යම් ආකාරයක අන්තර්-මැදිහත්වීමක් සමඟ ඉහළට යාමයි. සරල පුනරාවර්තන අන්තර් මැදිහත්වීමකින් 2 වන සාධකය අනුව උඩුගත කිරීම කරමු. මෙය ලෙස ලිවිය හැකිය2(11)*xq2(11)*q*xq=(q0q1q2)

(11)*q=(q0q0+q1q1+q2q2),

එනම්, අපට පුනරාවර්තන උපසම්පදරය 2 වන සාධකය හා 3 ප්‍රමාණයේ කර්නලයක් සමඟ කර්නල් ප්‍රමාණය 4 සමඟ පාරදෘශ්‍ය සම්මුතියක් මගින් ප්‍රතිස්ථාපනය කළ හැකිය.


නිගමන සහ අවසාන අදහස්

ගැඹුරු ඉගෙනීමේ දී දක්නට ලැබෙන පොදු සංවර්‍ධනයන් මූලික මෙහෙයුම් වලදී වෙන් කොට ගෙන ඒවා ටිකක් පැහැදිලි කර ගත හැකි යැයි මම බලාපොරොත්තු වෙමි.

මම මෙහි සංචිතය ආවරණය කළේ නැහැ. නමුත් මෙය රේඛීය නොවන පසුබෑමක් පමණක් වන අතර මෙම අංකනය තුළද සැලකිය හැකිය.


විශිෂ්ට පිළිතුර. ගණිතමය / සංකේතාත්මක ඉදිරිදර්ශනයක් ගැනීම බොහෝ විට කරුණු පැහැදිලි කරයි. මෙම සන්දර්භය තුළ "විසංයෝජනය" යන පදය පවත්නා පාරිභාෂිතය සමඟ ගැටෙන බව සිතීමේදී මා නිවැරදිද ?
user76284

එය සැබවින්ම ගැටෙන්නේ නැත, එය තේරුමක් නැත. විසංයෝජනය යනු ඉහළ නියැදි ක්‍රියාකරු සමඟ සම්මුතියකි. විසංයෝජනය යන පදය යම් ආකාරයක ප්‍රතිලෝම ක්‍රියාකාරිත්වයක් සේ පෙනේ. මෙහි ප්‍රතිලෝමයක් ගැන කථා කිරීම අර්ථවත් වන්නේ අනුකෘති මෙහෙයුම් වල සන්දර්භය තුළ පමණි. එය ප්‍රතිලෝම අනුකෘතිය සමඟ ගුණ කිරීම සංවර්‍ධනයේ ප්‍රතිලෝම ක්‍රියාකාරිත්වය නොවේ (බෙදීම හා ගුණ කිරීම වැනි).
ඇන්ඩ්‍රේ බර්ග්නර්

zθ*x=zzθ*z=x

θ*z=xz=(θ*)+x

කෙටියෙන් කිවහොත්, OP හි ඊනියා “විසංයෝජන ස්ථරය” ඇත්ත වශයෙන්ම විකේතනය සිදු නොකරයි. එය වෙනත් දෙයක් කරයි (ඔබගේ පිළිතුරෙහි ඔබ විස්තර කළ දේ).
user76284

6

ඩේවිඩ් ඩාවෝගේ පිළිතුරට අමතරව: අනෙක් පැත්ත ගැන සිතීමට ද හැකිය. තනි නිමැවුම් පික්සෙල් නිෂ්පාදනය කිරීම සඳහා භාවිතා කරන (අඩු විභේදන) ආදාන පික්සෙල් කෙරෙහි අවධානය යොමු කරනවා වෙනුවට, නිමැවුම් පික්සෙල් කුමන කලාපයට දායක වන්නේද යන්න පිළිබඳව ඔබට අවධානය යොමු කළ හැකිය.

මෙය ඉතා ආවේගශීලී හා අන්තර්ක්‍රියාකාරී දෘශ්‍යකරණ මාලාවක් ඇතුළුව මෙම ආසවනය ප්‍රකාශනයේ සිදු කෙරේ . මෙම දිශාවට සිතීමේ එක් වාසියක් වන්නේ චෙක්බෝඩ් කෞතුක වස්තු පැහැදිලි කිරීම පහසු වීමයි.


5

මෙම බ්ලොග් සටහන හරහා පැමිණෙන තෙක් පුවත්පතේ හරියටම සිදුවූයේ කුමක්ද යන්න තේරුම් ගැනීමට මට බොහෝ කරදර ඇති විය: http://warmspringwinds.github.io/tensorflow/tf-slim/2016/11/22/upsample-and-image-segmentation -තෙන්සර්ෆ්ලෝ-සහ-ටීඑෆ්-සිහින් /

2x ඉහළ සාම්පලයක සිදුවන්නේ කුමක්ද යන්න මා තේරුම් ගන්නේ කෙසේද යන්න පිළිබඳ සාරාංශයක් මෙන්න:

කඩදාසි වලින් තොරතුරු

  • උඩුකුරු කිරීම යනු කුමක්ද?
  • එම සම්මුතියේ පරාමිතීන් මොනවාද?
  • බර ස්ථාවර හෝ පුහුණු කළ හැකිද?
    • පුවත්පතේ සඳහන් වන්නේ “අපි ද්විමාන අන්තර් මැදිහත්වීම සඳහා 2x උඩුගත කිරීම ආරම්භ කරමු, නමුත් පරාමිතීන් ඉගෙන ගැනීමට ඉඩ දෙන්න [...]”.
    • කෙසේ වෙතත්, අනුරූප ගිතුබ් පිටුවේ සඳහන් වන්නේ "අපගේ මුල් අත්හදා බැලීම් වලදී අන්තර්සම්බන්ධතා ස්ථර බිලිනියර් කර්නල් වෙත ආරම්භ කරන ලද අතර පසුව ඉගෙන ගන්නා ලදී. පසු විපරම් අත්හදා බැලීම් වලදී සහ මෙම යොමු ක්‍රියාවට නැංවීමේදී බිලිනියර් කර්නල් සවි කර ඇත."
    • → ස්ථාවර බර

සරල උදාහරණය

  1. පහත ආදාන රූපය සිතන්න:

ආදාන රූපය

  1. මෙම අගයන් අතර සාධකය -1 = 2-1 = 1 ශුන්‍යයන් ඇතුළත් කිරීමෙන් පසුව ස්ට්රයිඩ් = 1 උපකල්පනය කිරීමෙන් භාගික විස්තාරක කැටි ගැසීම් ක්‍රියාත්මක වේ. මේ අනුව, ඔබට පහත 6x6 පෑඩ් රූපය ලැබේ

පෑඩ් රූපය

  1. Bilinear 4x4 පෙරණය මේ වගේ. එහි අගයන් තෝරාගෙන ඇත්තේ පාවිච්චි කරන ලද බර (= සියලු බර ඇතුළත් කළ ශුන්‍යයකින් ගුණ නොකිරීම) 1 දක්වා එකතුවකි. එහි අද්විතීය අගයන් තුන 0.56, 0.19 සහ 0.06 වේ. තවද, පෙරනයේ කේන්ද්‍රය සම්මුතියකට අනුව තුන්වන පේළියේ සහ තුන්වන තීරුවේ පික්සෙල් වේ.

පෙරහන

  1. පෑඩ් කළ පින්තූරය මත 4x4 ෆිල්ටරය යෙදීමෙන් (පෑඩින් = 'එකම' සහ ස්ට්‍රයිඩ් = 1 භාවිතා කිරීමෙන්) පහත දැක්වෙන 6x6 උඩුකුරු රූපය ලබා දෙයි:

ඉහළ රූපය

  1. සෑම නාලිකාවක් සඳහාම මේ ආකාරයේ උඩුගත කිරීම් සිදු කරනු ලැබේ ( https://github.com/shelhamer/fcn.berkeleyvision.org/blob/master/surgery.py හි 59 වන පේළිය බලන්න ). අවසානයේදී, 2x ඉහළ නැංවීම සැබවින්ම ඉතා සරල ප්‍රතිප්‍රමාණනයකි, බිලිනියර් අන්තර් මැදිහත්වීම සහ දේශසීමා හැසිරවිය යුතු ආකාරය පිළිබඳ සම්මුතීන්. 16x හෝ 32x ඉහළ නැංවීම එකම ආකාරයකින් ක්‍රියාත්මක වන බව මම විශ්වාස කරමි.

0

පයිටෝර්ච් වැනි මෘදුකාංග පුස්තකාල විසින් ක්‍රියාත්මක කරන ලද පරිදි, ඒත්තු ගැන්වීම සහ පාරදෘශ්‍ය කිරීම සිදු කරන්නේ කෙසේද යන්න පැහැදිලි කිරීම සඳහා මම සරල උදාහරණ කිහිපයක් ලියා තැබුවෙමි.

https://makeyourownneuralnetwork.blogspot.com/2020/02/calculat-output-size-of-convolutions.html

දෘශ්‍ය පැහැදිලි කිරීම් සඳහා උදාහරණයක්:

රූප විස්තරය මෙහි ඇතුළත් කරන්න


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.