keras中的 concatenate 詳解

2022-09-09 17:12:32 字數 1939 閱讀 7695

最近看模態融合,用到了 keras 中的 concatenate() 函式,之前沒有搞明白其中的axis這個引數是什麼意思。後來經過一番研究,總算是搞明白了。

先看**

import numpy as np

import keras.backend as k

import tensorflow as tf

a = k.variable(np.array([[

[1,2

],[3

,4]]

,[[5

,6],

[7,8

]]])

)b = k.variable(np.array([[

[9,10

],[11

,12]]

,[[13

,14],

[15,16

]]])

)c1 = k.concatenate(

[a, b]

, axis=0)

c2 = k.concatenate(

[a, b]

, axis=1)

c3 = k.concatenate(

[a, b]

, axis=2)

#試試預設的引數,其實就是從倒數第乙個維度進行融合的。

c4 = k.concatenate(

[a, b]

)c5 = k.concatenate(

[a, b]

,axis=-1

)init = tf.global_variables_initializer(

)with tf.session(

)as sess:

sess.run(init)

print

('***************'

)print

(a.shape,b.shape)

print

('***************'

)print

('*****c1******'

,c1.shape)

print

(sess.run(c1)

)print()

print

('*****c2******'

,c2.shape)

print

(sess.run(c2)

)print()

print

('*****c3******'

,c3.shape)

print

(sess.run(c3)

)print()

print

('*****c4******'

,c4.shape)

print

(sess.run(c4)

)print

('*****c5******'

,c5.shape)

print

(sess.run(c5)

)

再看看輸出的效果:

axis=n表示從第n個維度進行拼接,對於乙個三維矩陣,axis的取值可以為[-3, -2, -1, 0, 1, 2]。

axis=-2,意思是從倒數第2個維度進行拼接,對於三維矩陣而言,這就等同於axis=1。

axis=-1,意思是從倒數第1個維度進行拼接,對於三維矩陣而言,這就等同於axis=2。

簡單點理解:可能從影象上來理解比較複雜,但是如果從數學的角度來 看很簡單,就比如上邊的例子

兩個 (2,2,2)(2,2,2)的陣列進行融合,,

[1][2]

keras中sample weight的使用

sample weight的作用就是為資料集中的資料分配不同的權重。我的例子是要將資料集的資料分為三類,用0,1,2代表這三類,我這裡想為0分配權重0.3,為1分配權重1,為2分配權重2.我的資料是儲存在csv檔案中的,我提取出標籤列表,標籤列表的內容是0,1,2的集合,列表名稱為y train。我...

keras中遇到的錯誤

在執行其他開源keras專案時,遇到了一些問題 1 在匯入 obtain input shape時 出現錯誤如下 importerror cannot import name obtain input shape 2 在使用 obtain input shape方法時出現錯誤 obtain inpu...

keras 中的 verbos的用法

在 fit 和 evaluate 中 都有 verbose 這個引數,下面詳細說一下 verbose 日誌顯示 verbose 0 為不在標準輸出流輸出日誌資訊 verbose 1 為輸出進度條記錄 verbose 2 為每個epoch輸出一行記錄 注意 預設為 1 verbose 日誌顯示 ver...