![](/img/trans.png)
[英]TypeError: The added layer must be an instance of class Layer. Found: Tensor("concatenate_6/concat:0", shape=(None, 4608), dtype=float32)
[英]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
層是網絡的第一個,您應該在keras
和tf.keras
之間進行選擇(最好是第二個)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.