[英]How do I plot a Keras/Tensorflow subclassing API model?
[英]How can I implement a custom PCA layer in my model using Model Subclassing API?
我正在嘗試為正在使用 Model 子類 API 開發的 model 實現自定義 PCA 層。這就是我定義層的方式。
class PCALayer(tf.keras.layers.Layer):
def __init__(self):
super(PCALayer, self).__init__()
self.pc = pca
def call(self, input_tensor, training=False):
x = K.constant(self.pc.transform(input_tensor))
return x
pca 本身來自sklearn.decomposition.PCA
並且已經適合所需的數據並且沒有被轉換。
現在,這就是我將圖層添加到我的 model 的方式
class ModelSubClassing(tf.keras.Model):
def __init__(self, initizlizer):
super(ModelSubClassing, self).__init__()
# define all layers in init
# Layer of Block 1
self.pca_layer = PCALayer()
self.dense1 = tf.keras.layers.Dense(...)
self.dense2 = tf.keras.layers.Dense(...)
self.dense3 = tf.keras.layers.Dense(...)
def call(self, input_tensor, training=False):
# forward pass: block 1
x = self.pca_layer(input_tensor)
x = self.dense1(x)
x = self.dense2(x)
return self.dense3(x)
當我編譯 model 時沒有錯誤。 但是,當我安裝 model 時,出現以下錯誤:
NotImplementedError: Cannot convert a symbolic Tensor (model_sub_classing_1/Cast:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported
誰能幫幫我...
來自self.pc.transform
的 self.pc.transform 需要一個 numpy 數組,但您提供了一個 tf 張量。 構建圖層時,它傳遞一個符號張量來構建圖形等,而這個張量不能轉換為 numpy 數組。 答案有誤:
您正在嘗試將 Tensor 傳遞給 NumPy 調用,這是不支持的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.