簡體   English   中英

TypeError:添加的層必須是 class 層的實例。 找到:Tensor(“input_1:0”, shape=(None, 64, 64, 3), dtype=float32) -Python

[英]TypeError: The added layer must be an instance of class Layer. Found: Tensor(“input_1:0”, shape=(None, 64, 64, 3), dtype=float32) -Python

我實際上嘗試制作一個卷積神經網絡來對狗和貓進行分類(我是機器學習的新手,所以不要對我評價太差:))。 我從這篇文章的標題中得到了完全相同的錯誤。 老實說,我試圖從 Keras API 文檔中學習自己,試圖從 stackoverflow、github、towardsdatascience 等中獲取一些技巧。 有人說錯誤屬於 tensorflow 和 keras 庫的不同版本,其他人說它屬於語法。 我會把我的代碼留在這里,告訴我哪里出錯了,我願意學習新的技巧。

#IMPORTING LIBRARIES
import tensorflow as tf
import pandas as pd
import keras
from keras.preprocessing.image import ImageDataGenerator



#IMAGE DATA PREPROCESSING

#preprocessing the training set
train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)
training_set = train_datagen.flow_from_directory(
        directory = r"C:\Users\Cucu\Downloads\training_set",
        target_size=(64 , 64),
        batch_size=32,
        class_mode='binary')

#preprocessing the test set
test_datagen = ImageDataGenerator(rescale=1./255)
test_set = test_datagen.flow_from_directory(
        directory = r"C:\Users\Cucu\Downloads\test_set",
        target_size=(64 , 64),
        batch_size=32,
        class_mode='binary')


 
#BULDING THE CNN
#
#
#initialising the cnn
cnn = tf.keras.models.Sequential()


#convolution
cnn.add(tf.keras.layers.Conv2D(filters = 32 , kernel_size = 3 , activation = 'relu' ))
cnn.add(keras.Input(shape=(64, 64, 3)))

#pooling
cnn.add(tf.keras.layers.MaxPool2D( pool_size = 2 , strides = 2))


#adding a SECOND CONVOLUTIONAL LAYER
cnn.add(tf.keras.layers.Conv2D(filters = 32 , kernel_size = 3 , activation = 'relu'))
cnn.add(tf.keras.layers.MaxPool2D( pool_size = 2 , strides = 2))


#flattening
cnn.add(tf.keras.layers.Flatten())


#full connection
cnn.add(tf.keras.layers.Dense(units = 128 , activation = 'relu'))


#adding the output layer
cnn.add(tf.keras.layers.Dense(units = 4 , activation = 'sigmoid'))

並且錯誤(與標題完全相同)是:

TypeError: The added layer must be an instance of class Layer. Found: Tensor("input_1:0", shape=(None, 64, 64, 3), dtype=float32)

非常感謝那些能給我一些提示的人。 我知道這是一個額外的完整初學者級別,但你知道,有時你必須沿着實踐經驗學習:)

代替:

#convolution
cnn.add(tf.keras.layers.Conv2D(filters = 32 , kernel_size = 3 , activation = 'relu' ))
cnn.add(keras.Input(shape=(64, 64, 3)))

經過:

cnn.add(tf.keras.Input(shape=(64, 64, 3)))
cnn.add(tf.keras.layers.Conv2D(filters = 32 , kernel_size = 3 , activation = 'relu' ))

通常, Input層是網絡的第一個,您應該在kerastf.keras之間進行選擇(最好是第二個)

暫無
暫無

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

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