- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在从大量 384x286 黑白图像手动创建我的数据集。
我加载这样的图像:
x = []
for f in files:
img = Image.open(f)
img.load()
data = np.asarray(img, dtype="int32")
x.append(data)
x = np.array(x)
这导致 x 成为一个数组 (num_samples, 286, 384)
print(x.shape) => (100, 286, 384)
阅读 keras 文档并检查我的后端,我应该向卷积步骤提供一个由(行、列、 channel )组成的 input_shape
因为我不知道样本大小,所以我希望作为输入大小传递,类似于
( None, 286, 384, 1 )
模型构建如下:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
# other steps...
作为 input_shape (286, 384, 1) 传递导致:
Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (85, 286, 384)
传递 as_input_shape (None, 286, 384, 1 ) 导致:
Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=5
我做错了什么?我该如何 reshape 输入数组?
最佳答案
将 input_shape
设置为 (286,384,1)。现在该模型需要 4 个维度的输入。这意味着您必须使用 .reshape(n_images, 286, 384, 1)
reshape 图像。现在您已经在不更改数据的情况下添加了一个额外的维度,并且您的模型已准备好运行。基本上,您需要将数据 reshape 为(n_images
、x_shape
、y_shape
、channels
)。
很酷的是,您还可以使用 RGB 图像作为输入。只需将 channels
更改为 3。
同时检查这个答案: Keras input explanation: input_shape, units, batch_size, dim, etc
示例
import numpy as np
from keras.models import Sequential
from keras.layers.convolutional import Convolution2D
from keras.layers.core import Flatten, Dense, Activation
from keras.utils import np_utils
#Create model
model = Sequential()
model.add(Convolution2D(32, kernel_size=(3, 3), activation='relu', input_shape=(286,384,1)))
model.add(Flatten())
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
#Create random data
n_images=100
data = np.random.randint(0,2,n_images*286*384)
labels = np.random.randint(0,2,n_images)
labels = np_utils.to_categorical(list(labels))
#add dimension to images
data = data.reshape(n_images,286,384,1)
#Fit model
model.fit(data, labels, verbose=1)
关于python - 用于 conv2d 和手动加载图像的 Keras input_shape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43895750/
这是代码: model = Sequential() model.add(LSTM(24, input_shape = (trainX.shape[0], 1, 4))) model.add(Dens
当我运行以下代码时: from keras import models from keras import layers from keras import optimizers model = mo
我必须设计一个接受两个输入 X_1 和 X_2 的神经网络。该层将它们转换为固定大小的向量(10D),然后按以下方式对它们求和 class my_lyr(tf.keras.layers.Layer):
我有一个具有以下形状的输入数据:(5395, 69, 1) 我的 input_shape 应该是: (69,1) 或 (1,69) ? 在 LSTM 层中有 69 个神经元,我得到第一个 input_
我正在尝试在文本输入上运行神经网络。这是二元分类。这是到目前为止我的工作代码: df = pd.read_csv(pathname, encoding = "ISO-8859-1") df = df[
据我所知,输入元组是从卷积 block 进入的。所以如果我们想改变 input_tuple 的形状,修改卷积是有意义的。为什么我们需要 include_top=False 并去掉最后的全连接层? 另一
在 Keras 中,为什么是 input_shape当作为参数传递给像 Dense 这样的层时,不包括批处理维度但在 input_shape 时包含批处理维度传递给 build模型的方法? impor
我正在尝试编写代码来从 CSV 文件加载数据类型后识别数据类型。因此有 5 个可能的标签,并且特征向量包含列表的列表。特征向量是具有以下形状的列表的列表: [slash_count、dash_coun
These is the image of the code LSTM model please help me to give appropriate input_dim value for the
我正在从大量 384x286 黑白图像手动创建我的数据集。 我加载这样的图像: x = [] for f in files: img = Image.open(f) i
当我们在 Keras2 中进行迁移学习时,Arguments 需要“input_shape”和“input_tensor”。但我只使用 input_tensor 并且从未使用过 input_shape
我有一个 pandas 数据框 X_train,包含 733999 个样本和 5 个特征。 model = Squential() model.add(Conv2D(filters = 32,
我想使用预训练Net,例如VGG、ResNet。在 Keras 中,必须在 input_shape 的 (w,h,3) 中指定格式。如果我想将 channel 指定为1,还有更多技巧吗? conv_v
在 Convolution2D 的 Keras 文档中,input_shape 128x128 RGB 图片由 input_shape=(3, 128, 128) 给出,因此我认为第一个组成部分应该是
长话短说 我在定义输入形状时遇到这些错误 ValueError: Error when checking input: expected conv2d_1_input to have 4 dimens
我不断从以下代码中收到 input_shape 错误。 from keras.models import Sequential from keras.layers.core import Dense,
我知道 Inception V3 的 input_shape 是 (299,299,3)。但在 Keras 中,如果 include_top 为 False,则可以构建具有自定义 input_shap
我正在尝试使用 the example described in the Keras documentation名为“用于序列分类的堆叠 LSTM”(请参阅下面的代码),并且无法在我的数据上下文中
我正在尝试转换我从 davidsandberg/facenet 获得的卡住模型使用 TF Lite Converter 到 Ubuntu 18.04.1 LTS (VirtualBox) 上的 .tf
对于任何 Keras 层(Layer 类),有人可以解释如何理解 input_shape 之间的区别吗? , units , dim , 等等。? 例如,文档说 units指定层的输出形状。 在下面的
我是一名优秀的程序员,十分优秀!