python - Keras CNN 问题
问题描述
我正在尝试编写一个连体网络,使用负采样,代码只有 20 个示例(包括正和负)每个示例包括 2 个图像(x1,x2)和一个指示图像是否相同的输出
image1 image1 1
image1 image2 0
为此,我有兴趣获得最后一层,即 Keras 中的 Dense() 层,分别为 X1 和 X2。
X1 的形状是 20,28,28,1,X2 是 20,28,28,1 两者的类型都是 numpy.ndarray
但是当我应用 CNN 模型时,它给出了以下错误。
“TypeError:添加的图层必须是Layer类的实例。找到:(28,28,1)
请参阅下面的python代码
model = Sequential([(Image1[0].shape),
Conv2D(16,kernel_size=(3,3),strides=[1,1],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv1'),
Activation('relu'),
MaxPool2D(pool_size=(2, 2)),
Conv2D(32,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv2'),
Activation('relu'),
Conv2D(64,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv3'),
Activation('relu'),
MaxPool2D(pool_size=(2, 2)),
Flatten(),
Dense(20)
])
有人可以帮我解决这个错误吗?
谢谢萨钦
解决方案
第一个模型层应指定您要输入的图像的形状。在您的情况下,您将图像形状添加为图层。
看看如何做到这一点:
IM_WIDTH = 128
IM_HEIGHT = 128
model = Sequential(
Conv2D(16, input_size=(IM_HEIGHT, IM_WIDTH, 3), kernel_size=(3,3),strides=[1,1],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv1'),
Activation('relu'),
MaxPool2D(pool_size=(2, 2)),
Conv2D(32,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv2'),
Activation('relu'),
Conv2D(64,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv3'),
Activation('relu'),
MaxPool2D(pool_size=(2, 2)),
Flatten(),
Dense(20)
])
推荐阅读
- android - 为什么在Android中使用协程通过networkBoundResource调用API的函数运行单元测试时实际调用API?
- python-3.x - 在频道中出现 python-telegram-bot 错误
- java - Java Stdin 和 Stdout II 为什么需要给 scan.nextLine()
- c++ - 对同时包含数字和字母的字符串数组进行数字排序的方法?(C++)
- python - 选择未出现在内部联接 pandas 中的行
- oracle-apex - 如何在页面按钮上的交互式网格中添加警告弹出窗口
- php - 在 PowerShell 上使用 Invoke-WebRequest 从 php 脚本中获取数组
- flutter - Flutter UI - 像 Uber 应用程序一样的自定义 TextFormField 转换
- reactjs - 更改 Gatsby 链接行为 - 页面更改时停止滚动动画
- google-play - SubscriptionPurchase.Get 响应中缺少 Google Play Developer API cancelSurveyResult