簡體   English   中英

多層感知器的 Keras vs TensorFlow2 實現

[英]Keras vs TensorFlow2 Implementation of Multilayer Perceptron

我有一個簡單的多層感知器模型的以下實現,如下所示:

from keras.models import Model 
from keras.layers import Input 
from keras.layers import Dense 
from keras.utils import plot_model

visible = Input(shape=(10,))
hidden1 = Dense(10, activation='relu')(visible)
hidden2 = Dense(20, activation='relu')(hidden1)
hidden3 = Dense(10, activation='relu')(hidden2)
output = Dense(1, activation='sigmoid')(hidden3)

my_model_keras = Model(inputs=visible, outputs=output)

和 plot_model() 函數返回下圖:

在此處輸入圖片說明

然后我嘗試在 Tensorflow2 中實現相同的模型,如下所示:

import tensorflow as tf

class TensorflowModel(tf.keras.Model):
    def __init__(self):
        super(TensorflowModel, self).__init__()

        self.visible = tf.keras.layers.Input(shape=(10,))
        self.hidden1 = tf.keras.layers.Dense(10)
        self.hidden2 = tf.keras.layers.Dense(20)
        self.hidden3 = tf.keras.layers.Dense(10)
        self.final = tf.keras.layers.Dense(1)

    def call(self, x, training=False):
        x = self.visible(x)
        x = tf.nn.relu(x)
        x = self.hidden1(x)
        x = tf.nn.relu(x)
        x = self.hidden2(x)
        x = tf.nn.relu(x)
        x = self.hidden3(x)
        x = tf.nn.relu(x)
        x = self.final(x)

        return tf.nn.sigmoid(x)

my_model_tf = TensorflowModel()

但是, plot_model() 函數返回此圖(與上圖不同):

在此處輸入圖片說明

我對 Tensorflow2 模型的實現有什么問題嗎?

型號應該是一樣的。 我懷疑圖中的差異是由於您使用的是 tf.nn 操作而不是第一個實現中的層激活。 因此, plot_model 實現可能不會將密集層節點解釋為相鄰節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM