Sinir ağlarının "kara kutusu" nda ustalaşmanız dahil olmak üzere bu kılavuzu anlayın

Tam metin 4327 Kelimeler, tahmini öğrenme süresi 20 Dakika veya daha uzun

"İnsan sinir ağları nasıl çalışır?" Bu soru birçok veri bilimcinin kafasını karıştırır. Basit bir sinir ağının çalışma mekanizmasını açıklamak çok kolay ama bir bilgisayarla görme projesindeki katman sayısı 1000 kat arttığında ne yapılmalıdır?

Son kullanıcı modelin nihai sonucu nasıl aldığını anlamak istediğinde, derin sinir ağının çalışma mekanizmasını sadece kağıt ve kalemle açıklamak mümkün değildir. Öyleyse, sinir ağının artık "kara kutu" kadar gizemli olmaması nasıl sağlanır?

Görselleştirme bunu yapabilir - sinir ağlarının farklı özelliklerini görselleştirmek her şeyi netleştirebilir ve ayrıca evrişimli sinir ağlarının (CNN) binlerce görüntü eğitim sonuçlarını daha sezgisel olarak sunabilir.

Bu makale, evrişimli sinir ağlarının görselleştirilmesi için farklı teknikleri tanıtacaktır. Ek olarak, evrişimli sinir ağı modelini iyileştirmek için bu görselleştirmelerden farklı görünümler çıkarmaya da çalışacağız.

Not: Bu makale sinir ağları ve evrişimli sinir ağlarının temel bilgi noktalarını tartışmayacaktır. Aşağıdaki üç makale, ilgili bilgi noktalarını gözden geçirmenize veya anlamanıza yardımcı olabilir.

· Evrişimli Sinir Ağlarını Sıfırdan öğrenmek için Kapsamlı Bir Öğretici (Evrişimli Sinir Ağlarını sıfırdan öğrenmek için kapsamlı bir eğitim)

· Derin Öğrenme ve Sinir Ağlarına Giriş Kılavuzu (Derin Öğrenmeye ve Sinir Ağlarına Giriş)

· Derin Öğrenmenin Temelleri - Yapay Sinir Ağıyla Başlama (Yapay sinir ağıyla başlayan derin öğrenmenin temeli)

içindekiler

1. Sinir ağlarının kodunu çözmek için neden görselleştirme kullanılıyor?

2. Model mimarisi oluşturun

3. CNN katmanlarını bilin

4. Evrişimli sinir ağı bileşenlerinin filtre görselleştirmesi

5. Maksimum aktivasyon-model beklentilerini görselleştirin

6. Tıkanma haritası-giriş sürecinin önemli kısımlarını görselleştirin

7. Belirginlik haritası-girdi özelliği katkısını görselleştirin

8. Sınıf aktivasyon eşlemesi

9. Hiyerarşik çıktı görselleştirme-süreci görselleştirme

Sinir ağlarının kodunu çözmek için neden görselleştirme kullanılıyor?

Bu, çalışmaya değer bir sorudur. Sinir ağlarının nasıl çalıştığını anlamanın birçok yolu vardır. Neden olağanüstü görselleştirme yoluna dönelim?

Bu soruyu bir örnekle cevaplayın. Örneğin, bir projenin kar leoparı ve Arap leoparı gibi hayvanların resimlerini sınıflandırması gerekir. Sezgisel olarak, görüntünün arka planından ayırt edilebilir.

Bu iki hayvanın yaşam alanları tamamen farklıdır. Çoğu kar leoparı resminde arka planda kar bulunurken, çoğu Arap leoparı resminin arka planda geniş bir çöl vardır.

İşte soru geliyor: Model kar ve çöl görüntülerini sınıflandırmaya başladığında, modelin iki leoparın özelliklerini nasıl ayırt edeceğini doğru bir şekilde öğrendiğinden nasıl emin olunur? Cevap görselleştirmedir.

Görselleştirme, modelin görüntüleri sınıflandırmasına hangi özelliklerin rehberlik edebileceğini anlamamıza yardımcı olur.

Bir modeli görselleştirmenin birçok yolu vardır ve bu makale bunlardan birkaçını tanıtacaktır.

Model mimarisi oluşturun

Öğrenmenin en iyi yolu kavramları kodlamaktır. Bu nedenle, bu makale doğrudan Python kodunu inceleyecek ve pratik kodlama yönergeleri sağlayacaktır.

Bu makale VGG16 mimarisini kullanır ve ImageNet veri setinde önceden eğitilmiş ağırlıklar kullanır. İlk adım, modeli programa aktarmak ve mimarisini anlamaktır.

Ardından model mimarisini görselleştirmek için Keras'ta "model.summary ()" işlevini kullanın. Bu, model oluşturma sürecine girmeden önce çok kritik bir adımdır. Girdi ve çıktının şeklinin problem ifadesiyle eşleşmesini sağlamanız gerektiğinden, modele genel bakışı görselleştirmeniz gerekir.

#importing gerekli modülleri keras.applications'tan VGG16'yı içe aktarın # kaydedilen modeli yükleme # tüm mimariyi kullanıyoruz, bu nedenle include_top = True model = VGG16 (ağırlıklar = 'imagenet', include_top = True) # modelin özetini göster model.summary ()

Aşağıdaki tablo, yukarıdaki kod tarafından oluşturulan modele genel bir bakıştır.

Bu tablo, modelin ayrıntılı mimarisini ve her katman için eğitilebilir parametrelerin sayısını kaydeder. Umarım yukarıdaki içeriği okumak için biraz zaman ayırabilir ve ulaştığımız seviyeyi anlayabilirsiniz.

Bu, özellikle model katmanının yalnızca bir alt kümesini eğitirken (özellik çıkarma) önemlidir. Bir model genel bakışı oluşturarak, eğitilemeyen parametrelerin sayısının, eğitmek istemediğiniz katman sayısıyla eşleşmesini sağlayabilirsiniz.

Ek olarak, geliştiriciler GPU'nun modeli eğitmek için yeterli bellek ayırıp ayırmadığını kontrol etmek için toplam eğitilebilir parametre sayısını kullanabilir. Bilgisayarlarla çalışan çoğu insan için bu görev yaygındır, ancak aynı zamanda bir zorluktur.

Evrişimli sinir ağlarının katmanlarını anlama

Modelin genel mimarisini anladıktan sonra, sinir ağının her katmanını derinlemesine keşfetmeyi deneyebilirsiniz.

Aslında, Keras modelinin katmanlarına erişmek ve ağırlıklar ve filtre sayısı gibi diğer bilgileri içeren her katmanın ilgili parametrelerini çıkarmak çok kolaydır.

İlk olarak, bir sözlük oluşturun ve katman adlarını karşılık gelen özellikleri ve ağırlıklarıyla eşleyin.

# katman adı ve katman ayrıntılarının bir eşlemesini oluşturma # katman adını kendi özelliklerine eşleyen bir sözlük layer_info oluşturacağız layer_info = {} model.layers'da i için: layer_info = i.get_config () # burada, katman_ ağırlıkları sözlüğü her katman_ adını karşılık gelen ağırlıklarla eşleyecektir layer_weights = {} model.layers'da i için: layer_weights = i.get_weights () baskı (layer_info)

Block5_conv1 katmanının farklı parametreleri dahil yukarıdaki kodun çıktı sonucu aşağıdaki gibidir:

{'ad': 'block5_conv1', 'eğitilebilir': Doğru, 'filtreler': 512, 'kernel_size': (3, 3), 'adımlar': (1, 1), 'padding': 'aynı', 'data_format': 'channel_last', 'dilation_rate': (1, 1), 'activation': 'relu', 'use_bias': Doğru, 'kernel_initializer': {'class_name': 'VaryceScaling', 'config': {'scale': 1.0, 'mode': 'fan_avg', 'dağıtım': 'tek tip', "tohum": Yok}}, 'bias_initializer': {'class_name': 'Sıfırlar', 'config': {}}, 'kernel_regularizer': Yok, 'bias_regularizer': Yok, 'activity_regularizer': Yok, 'kernel_constraint': Yok, "bias_constraint": Yok}

"Blok5_conv1" katmanının eğitilebilir parametre değerleri gerçektir, bu, ağırlıkların daha fazla model eğitimi ile güncellenebileceği anlamına gelir.

Evrişimli sinir ağı bileşenlerinin filtre görselleştirmesi

Filtreler, evrişimli sinir ağlarının temel bileşenleridir. Aşağıdaki şekilde gösterildiği gibi, farklı filtreler görüntüden farklı türde özellikler çıkaracaktır:

Şekilde gösterildiği gibi, her bir evrişimli katman birden çok filtreden oluşur. Önceki bölümde bahsedilen "block5_conv1" katmanının parametre özetini hatırlatmak, bu katmanın 512 filtre içerdiğini gösterir, bu gerçekten de doğrudur.

Aşağıdaki kodlama yoluyla, her bir VGG16 modülünün ilk evrişimli katmanının ilk filtresi çizilebilir:

katmanlar = model.layers layer_ids = # filtreleri çizin incir, ax = plt.subplots (nrows = 1, ncols = 5) aralıktaki i için (5): balta .imshow (layer.get_weights (), cmap = 'gray') balta .set_title ('blok' + str (i + 1)) balta .set_xticks () balta .set_yticks ()

Yukarıdaki çıktı sonuçları, farklı katmanların filtreleridir. VGG16 yalnızca 3 × 3 filtreler kullandığından, tüm filtreler aynı şekle ve boyuta sahiptir.

Etkinleştirme maksimizasyonu-modelin beklediğini görselleştirin

Maksimum aktivasyon kavramını anlamak için aşağıdaki resmi kullanın:

Filleri belirleme sürecinde hangi özellikler daha önemlidir?

İşte düşünmesi daha kolay olan bazı özellikler.

· Dişler

· Fil hortumu

· Kulaklar

İnsanlar filleri sezgisel olarak bu şekilde yargılar. Ancak rastgele bir görüntüyü optimize etmek için evrişimli bir sinir ağı kullandığınızda ve onu bir fil olarak sınıflandırmaya çalıştığınızda ne olur?

Evrişimli sinir ağlarında, her bir evrişimli katman, önceki katmanın çıktısında benzer desenler arar. Giriş aradığı modeli içerdiğinde maksimum aktivasyon elde edilebilir.

Aktivasyon maksimizasyon tekniğinde, süreçteki kaybı en aza indirmek için her katmanın girdisi güncellenir.

Ne yapmalıyım? İlk olarak, girdiye göre aktivasyon kaybının gradyanının hesaplanması gerekir ve girdi buna göre güncellenir.

Aşağıda, açıklanan yöntemin kodu verilmiştir:

# gerekli modülleri içe aktarma vis.visualization'dan import visualize_activation vis.utils'ten araç ithalatı keras'tan içe aktarma etkinleştirmeleri keras'tan içe aktarma uygulamaları matplotlib.pyplot dosyasını plt olarak içe aktar % matplotlib satır içi plt.rcParams = (18,6) # tam bağlantılı katmanları kullanarak bir VGG16 modeli oluşturmak, çünkü # bireysel kategori için kalıpları görselleştirin keras.applications'tan VGG16'yı içe aktarın model = VGG16 (ağırlıklar = 'imagenet', include_top = True) # katman adını kullanarak katman dizinini bulma # find_layer_idx işlevi, katmanın modelini ve adını parametre olarak kabul eder ve ilgili katmanın dizinini döndürür layer_idx = utils.find_layer_idx (model, 'tahminler') # katmanın etkinleştirilmesini doğrusal olarak değiştirme model.layers.activation = activations.linear # modelde değişiklik uygulama model = utils.apply_modifications (model) # Hint fili img3 = visualize_activation (model, layer_idx, filter_indices = 385, max_iter = 5000, verbose = True) plt.imshow (img3)

Örnek model, Hintli fil kategorisine karşılık gelen rastgele girdi kullanır ve aşağıdakileri verir:

Modelin beklenen yapısının fildişi, iri gözler ve gövde olduğu görüntüden görülebilmektedir. Bu bilgiler, veri kümesinin bütünlüğünün kontrol edilmesine etkili bir şekilde yardımcı olabilir. Örneğin, modelin arka plandaki ağaçlar veya çimen gibi diğer nesneler gibi ilgili özellikleri anladığını varsayalım.Hint fillerinin yaşam alanı genellikle çok sayıda ağaç veya çimen içerdiğinden, model hatalar yapabilir. Ardından, maksimum etkinleştirme yoluyla, mevcut veri setinin görevi tamamlamak için yeterli olmayabileceğini göreceksiniz, bu nedenle fil özelliklerinin doğru bir şekilde tanımlanmasını sağlamak için farklı habitatlarda yaşayan fillerin resimlerini eğitim setine eklemek gerekir.

Tıkanma haritası-giriş sürecinin önemli kısımlarını görselleştirin

Aktivasyon maksimizasyonu, esas olarak görüntüdeki modelin beklentilerini görselleştirmek için kullanılır. Görüntü kapanması, model için görüntünün önemli kısmını bulabilir.

Şimdi görüntü kapanmanın çalışma prensibini anlamak için Toyota ve Audi gibi üreticilere göre arabaları sınıflandırabilen bir model oluşturuyoruz.

Resimdeki arabanın hangi firmaya ait olduğunu söyleyebilir misiniz? Zor olmalı. Çünkü firma logosunun bulunduğu kısım bloke edilmiştir. Açıkçası, görüntünün tıkalı kısmı, otomobilin üreticisini belirlerken çok önemli bir ipucu.

Benzer şekilde, bir kapatma haritası oluşturmak için görüntünün belirli kısımlarını kapatıyoruz ve ardından belirli bir sınıfa ait olma olasılığını hesaplıyoruz. Olasılık azalırsa, bu, sınıflandırmayı tamamlamak için tıkanma kısmının çok önemli olduğu anlamına gelir. Aksi takdirde bu bölümün önemi kalmaz.

Örnek program, olasılığı görüntünün her bir parçasının piksel değeriyle ilişkilendirir ve bir ısı haritası oluşturmak için onu normalleştirir:

numpy'yi np olarak içe aktar keras.utils'ten np_utils'i içe aktar keras.models'den Sıralı içe aktarma keras.layers'dan Yoğun, Bırakma, Düzleştir, Etkinleştirme, Dönüşüm2D, MaxPooling2D'yi içe aktarın keras.optimizers'dan Adam'ı içe aktarın keras.callbacks'den EarlyStopping, ModelCheckpoint'i içe aktarın keras.preprocessing.image adresinden ImageDataGenerator içe aktarın keras.activations'tan içe aktarma relu % matplotlib satır içi matplotlib.pyplot dosyasını plt olarak içe aktar def iter_occlusion (resim, boyut = 8): oklüzyon = np.full ((beden * 5, beden * 5, 1) ,, np.float32) occlusion_center = np.full ((boyut, boyut, 1) ,, np.float32) occlusion_padding = size * 2 # print ('dolgu ...') image_padded = np.pad (resim, (\ (occlusion_padding, occlusion_padding), (occlusion_padding, occlusion_padding), (0, 0) \ ), 'sabit', sabit_değerler = 0,0) aralıktaki y için (occlusion_padding, image.shape + occlusion_padding, size): aralıktaki x için (occlusion_padding, image.shape + occlusion_padding, size): tmp = image_padded.copy () tmp \ = tıkanma tmp = occlusion_center x-occlusion_padding, y-occlusion_padding, \ tmp

Yukarıdaki kod tarafından tanımlanan iter_occlusion işlevi, farklı kapatma parçalarıyla görüntüler oluşturabilir.

Artık görüntüyü içe aktarabilir ve işleyebilirsiniz:

keras.preprocessing.image adresinden import load_img # dosyadan bir resim yükle image = load_img ('araba.jpeg', target_size = (224, 224)) plt.imshow (resim) plt.title ('ORİJİNAL RESİM')

Üç adım vardır:

· Görüntüyü önceden işleyin

· Farklı tıkalı parçaların olasılığını hesaplayın

· Bir ısı haritası çizin

keras.preprocessing.image adresinden img_to_array içe aktar keras.applications.vgg16'dan preprocess_input dosyasını içe aktarın # görüntü piksellerini numpy dizisine dönüştür image = img_to_array (resim) # model için verileri yeniden şekillendirme image = image.reshape ((1, image.shape, image.shape, image.shape)) # görüntüyü VGG modeli için hazırlayın image = preprocess_input (resim) # tüm çıktı sınıflarındaki olasılığı tahmin edin yhat = model.predict (resim) temp = image baskı (temp.shape) ısı haritası = np.zeros ((224,224)) doğru_sınıf = np.argmax (yhat) numaralandırmada (iter_occlusion (temp, 14)) n, (x, y, image) için: heatmap = model.predict (image.reshape ((1, image.shape, image.shape, image.shape))) baskı (x, y, n, '-', image.shape) heatmap1 = heatmap / heatmap.max () plt.imshow (ısı haritası)

İlginç değil mi? Ardından, bir tıkanıklık parçası oluşturmak ve çizmek için standartlaştırılmış ısı haritası olasılığını kullanacağız:

skimage.io'yu io olarak içe aktar # standartlaştırılmış ısı haritası olasılıklarından maske oluşturma maske = ısı haritası1 < 0.85 mask1 = maske * 256 maske = mask.astype (int) io.imshow (maske, cmap = 'gri')

Son olarak, aşağıdaki prosedürü kullanarak, giriş görüntüsü kapatılır:

cv2 içe aktar # görseli oku image = cv2.imread ('araba.jpeg') image = cv2.cvtColor (resim, cv2.COLOR_BGR2RGB) # resmi uygun boyutlara yeniden boyutlandırın image = cv2.resize (resim, (224,224)) maske = mask.astype ('uint8') # maskeyi resme uygulayın final = cv2.bitwise_and (resim, resim, maske = maske) final = cv2.cvtColor (son, cv2.COLOR_BGR2RGB) # son resmi çizin plt.imshow (son)

Tahmin edin neden sadece belirli kısımlar görülebiliyor? Bu doğru - yalnızca çıktı resim türünün olasılığına önemli ölçüde katkıda bulunan kısımlar görülebilir. Kısacası, oklüzyon haritasının tamamı budur.

Özellik haritası-giriş özelliklerinin katkısını görselleştirin

Özellik haritası, gradyan tabanlı başka bir görselleştirme tekniğidir. Bu tür görüntüler, Derin İç Evrişimli Ağlar: Görüntü Sınıflandırma Modellerini Görselleştirme ve Belirginlik Haritaları makalesinde sunulmuştur.

Özellik haritası, giriş görüntüsünün her pikseline göre çıktı gradyanının hesaplanması dahil olmak üzere, her pikselin model çıktısı üzerindeki etkisini hesaplar.

Bu aynı zamanda girdi görüntü pikselleri biraz değiştiğinde çıktı kategorisinin nasıl değişeceğini de açıklar. Degradenin tüm pozitif değerleri, piksel değerindeki küçük bir değişikliğin çıktı değerini artıracağını gösterir:

Bu gradyanlar görüntünün şekli ile aynıdır (her piksel için gradyanlar hesaplanır) ve sezgisel algı üzerinde bir etkiye sahiptir.

Peki bir belirginlik haritası nasıl oluşturulur? Giriş görüntüsünü okumak için önce aşağıdaki kodu kullanın.

Ardından, VGG16 modeli aracılığıyla bir belirginlik haritası oluşturun:

# Katman dizinini ada göre aramak için yardımcı program. # Alternatif olarak, son katmana karşılık geldiğinden bunu -1 olarak belirtebiliriz. layer_idx = utils.find_layer_idx (model, 'tahminler') # Softmax'i doğrusal ile değiştirin model.layers.activation = activations.linear model = utils.apply_modifications (model) # kılavuzsuz backprop ile belirginlik haritası oluşturma grads1 = visualize_saliency (model, layer_idx, filter_indices = Yok, seed_input = görüntü) # kılavuzsuz belirginlik haritasını çizme plt.imshow (grads1, cmap = 'jet')

Modelin köpeğin yüzüne daha çok dikkat ettiğini görebilirsiniz. Aşağıdaki şekil, kılavuzlu geri yayılım kullanmanın sonucunu göstermektedir:

# kılavuzlu arka plan ile dikkat çeken harita oluşturma grads2 = visualize_saliency (model, layer_idx, filter_indices = Yok, seed_input = image, backprop_modifier = 'kılavuzlu') # belirginlik haritasını ısı haritası olarak çizme plt.imshow (grads2, cmap = 'jet')

Yönlendirmeli geri yayılım, tüm negatif gradyanları 0 olarak değiştirir, yani yalnızca sınıf olasılığı üzerinde olumlu bir etkisi olan pikseller güncellenir.

CAM (Sınıf Aktivasyon Haritaları) (gradyan ağırlıklı)

CAM aynı zamanda bir sinir ağı görselleştirme teknolojisidir.Temel prensip, etkinleştirme haritasının gradyanına veya çıktıya katkısına göre tartılmasıdır.

Grad-CAM raporundan alınan aşağıdaki alıntı, teknolojinin ana noktalarını vermektedir:

Grad-CAM, herhangi bir hedef konseptin gradyanını kullanabilir ("köpek" in normalleştirilmemiş olasılığı veya basit açıklama metni gibi), kaba bir konum haritası oluşturmak için son evrişimli katmana girebilir ve son olarak kavramı tahmin etmek için kullanılan görüntüyü vurgulayabilir Önemli alan.

Esasen, son evrişimli katmanın özellik haritasını alın ve hedefe ulaşmak için her filtreyi ağırlıklandırmak (çarpmak) için özellik haritasına göre çıktı gradyanını kullanın. Ağırlıklı bir gradyan aktivasyon haritası oluşturma süreci aşağıdaki adımları içerir:

1. Son evrişimli katman tarafından özellik haritası çıktısını kullanın. VGG16 için özellik haritasının boyutu 14x14x512'dir.

2. Özellik haritasına karşılık gelen çıktı gradyanını hesaplayın.

3. Gradyan global ortalama havuzlama gerçekleştirin.

4. Özellik haritasını ilgili havuz gradyanıyla çarpın.

Giriş görüntüsünü ve ilgili sınıf aktivasyon şemasını aşağıdaki gibi görebilirsiniz:

Aşağıdaki şekil sınıf aktivasyon şemasını göstermektedir.

İşlem hiyerarşik çıktısını görselleştirin

Evrişimli bir sinir ağının başlangıç katmanı genellikle kenarlar gibi küçük ayrıntıları arar. Modelin derinlemesine anlaşılmasıyla birlikte özellikleri de değişecektir.

Modelin farklı katmanlarının çıktısının görselleştirilmesi, ilgili katmanda vurgulanan görüntünün özelliklerini sezgisel olarak sunabilir. Mimaride sonraki sorunlar için ince ayar yapmak için görselleştirme çok önemli bir adımdır. Çünkü farklı katmanların farklı özelliklerini görebilir ve modelde kullanılan belirli katmanları belirleyebiliriz.

Örneğin, bir sinir stili aktarım probleminde farklı katmanların performansını karşılaştırırken, görsel çıktı çok yardımcı olabilir.

Aşağıdaki program, VGG16 modelinin farklı katmanlarının çıktılarının nasıl gerçekleştirileceğini gösterir:

# gerekli kitaplıkları ve işlevleri içe aktarma keras.models'ten içe aktarma Modeli # çıktıyı alacağımız katmanların adlarını tanımlama layer_names = çıktılar = image = image.reshape ((1, image.shape, image.shape, image.shape)) # çıktıyı ayıklama ve çıktılara ekleme layer_names içindeki layer_name için: intermediate_layer_model = Model (inputs = model.input, outputs = model.get_layer (layer_name) .output) intermediate_output = intermediate_layer_model.predict (resim) outputs.append (intermediate_output) # çıktıları çizme incir, ax = plt.subplots (nrows = 4, ncols = 5, figsize = (20,20)) aralıktaki i için (4): aralıktaki z için (5): balta .imshow (çıktılar ) balta .set_title (layer_names ) balta .set_xticks () balta .set_yticks () plt.savefig ('layerwise_output.jpg')

Şekilde gösterildiği gibi, VGG16'nın her katmanı (blok5 hariç) görüntüden farklı özellikler çıkarır. İlk katman, kenarlar gibi düşük seviyeli özelliklere karşılık gelirken, ikinci katman, çatı ve egzoz gibi özelliklere karşılık gelir.

Sonuç

Görselleştirme her zaman harika. Bir teknolojinin nasıl çalıştığını anlamanın birçok yolu olsa da, ilkelerini görselleştirmek, anlama sürecini daha ilginç hale getirecektir. Aşağıdaki ilgili sıcak konular ilgiyi hak ediyor:

· Sinir ağlarının özellik çıkarma işlemi son derece popüler bir araştırma alanıdır ve ayrıca TensorSpace ve "Aktivasyon Atlasları" (Aktivasyon Atlasları) gibi birçok aracın geliştirilmesini teşvik etmiştir.

· TensorSpace ayrıca birden fazla model formatını destekleyen bir sinir ağı görselleştirme aracıdır.Modelleri yükleyebilir ve etkileşimli olarak görselleştirebilir. TensorSpace ayrıca, kullanıcıların görselleştirme için birden fazla mimariyi kullanabileceği ve tarayıcıda sinir ağlarını deneyebileceği bir "oyun alanına" sahiptir.

Yorum Beğen Takip Et

AI öğrenme ve geliştirmenin kuru mallarını paylaşalım

Tam platform yapay zeka dikey öz medya "temel okuma" yı takip etmeye hoş geldiniz

Fantasy Westward Journey: En iyi çift artı kıyafetler doğar, yaratıcı ustalığı suçlar, bu kader olmalı!
önceki
Engellilere Yardım Günü'nde Yongzhou Silahlı Polis memurları ve askerler eylemde!
Sonraki
Fantasy Westward Journey: Eski gemi kaptanı çok yetenekliydi, basit bir operasyon, öfkeli bir mevcut görevli bunun hakkında konuşuyor
"Xiang" Yuewen Bo Changsha Tongguan fırın "Golden Flash" şok yabancı izleyiciler
Fantasy Westward Journey: God of War Mountain hayalini gerçekleştirin, en iyi ürün kılıcı keskinleştirmeden doğar ve patron buna değer!
"Programlama aracı] PHP 7.4 erken performans karşılaştırma testi: 7.3 ile neredeyse aynı
Fantasy Westward Journey: Oyuncu, tüm sunucunun en iyi kalpli kılıcını elinde tutuyor, WY onu geri almak için acele ediyor, ben de geçtim.
Fantasy Westward Journey: Duyarsızlaştırma için sadece 100 milyon 26 evcil hayvan kıyafeti mi? Tezgah sahibi başka bir gizem kurar, alıcı aptalca kayıp yaşar
Fantasy Westward Journey: Beşinci başlangıcın atası olarak bilinir ve herkes rüyayı bilir, oyun oyuncuları için en iyi görünümdür.
AI ile otizmli insanlar da meslektaşınız olabilir
Fantasy Westward Journey: Ekstra iki kelime yüzünden, mal sahibi batı tarzı küçük bir evi kaybettiğini hissediyor ki bu gerçekten tatmin edici değil.
2. Changsha Lawyer's Festival ve China Construction Trust He Cup National Lawyers Maratonu düzenlendi
Fantasy Westward Journey: Bir kimlik Firavun'un kıskançlığını uyandırıyor, aşk bildirmekten başka bir şey yapamıyor, sahibi doğrudan azarlıyor
Fantasy Westward Journey: Hane halkı oyuncuları oyunun gelecekteki yönünü tahmin eder. Oyun parasının değer kazanması
To Top