TypeError:添加的层必须是类层的实例。找到:Tensor(输入1:0),shape=(无,64,64,3),dtype=float32)-Python
实际上,我试着制作一个卷积神经网络来对狗和猫进行分类(我是机器学习的新手,所以不要对我的评价太差:)。我从这篇文章的标题中得到了完全相同的错误。老实说,我试着从KerasAPI文档中学习自己,试着从stackoverflow、github、towardsdatascience和其他人那里学到一些技巧。一些人说错误属于tensorflow和keras库的不同版本,另一些人说它属于语法。我将把我的代码留在这里,告诉我哪里犯了错误,我愿意学习新的技巧TypeError:添加的层必须是类层的实例。找到:Tensor(输入1:0),shape=(无,64,64,3),dtype=float32)-Python,python,keras,conv-neural-network,typeerror,Python,Keras,Conv Neural Network,Typeerror,实际上,我试着制作一个卷积神经网络来对狗和猫进行分类(我是机器学习的新手,所以不要对我的评价太差:)。我从这篇文章的标题中得到了完全相同的错误。老实说,我试着从KerasAPI文档中学习自己,试着从stackoverflow、github、towardsdatascience和其他人那里学到一些技巧。一些人说错误属于tensorflow和keras库的不同版本,另一些人说它属于语法。我将把我的代码留在这里,告诉我哪里犯了错误,我愿意学习新的技巧 #IMPORTING LIBRARIES impo
#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'))
错误(与标题完全相同)是:
非常感谢那些能给我一些建议的人。我知道这是一个额外的完整的初学者水平,但你知道,有时你必须在实践经验的过程中学习:)替换:
#convolution
cnn.add(tf.keras.layers.Conv2D(filters = 32 , kernel_size = 3 , activation = 'relu' ))
cnn.add(keras.Input(shape=(64, 64, 3)))
作者:
通常,
Input
层是您网络的第一层,您应该在keras
和tf.keras
之间进行选择(最好是第二层)为什么选择“tf.keras”?您的答案将记录在我的程序文档中,以了解如何优化我的代码:)@Andrei,因为tensorflow(基本上)更灵活。检查这个和这个。它更详细地解释了为什么使用tf.keras更好。谢谢您的支持!
#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' ))