我试图用一层构建CNN,但是我有一些问题。确实,编译器告诉我
ValueError:检查模型输入时出错:预期conv1d_1_input具有3维,但数组的形状为(569,30)
这是代码
import numpy
from keras.models import Sequential
from keras.layers.convolutional import Conv1D
numpy.random.seed(7)
datasetTraining = numpy.loadtxt("CancerAdapter.csv",delimiter=",")
X = datasetTraining[:,1:31]
Y = datasetTraining[:,0]
datasetTesting = numpy.loadtxt("CancereEvaluation.csv",delimiter=",")
X_test = datasetTraining[:,1:31]
Y_test = datasetTraining[:,0]
model = Sequential()
model.add(Conv1D(2,2,activation='relu',input_shape=X.shape))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, Y, epochs=150, batch_size=5)
scores = model.evaluate(X_test, Y_test)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
td; LR你需要重塑你的数据有一个 空间 维度Conv1d
是有道理的:
X = np.expand_dims(X, axis=2) # reshape (569, 30) to (569, 30, 1)
# now input can be set as
model.add(Conv1D(2,2,activation='relu',input_shape=(30, 1))
本质上重塑如下所示的数据集:
features
.8, .1, .3
.2, .4, .6
.7, .2, .1
至:
[[.8
.1
.3],
[.2,
.4,
.6
],
[.3,
.6
.1]]
解释和例子
通常,卷积在空间维度上起作用。内核在产生张量的维度上“卷积”。对于Conv1D,在每个示例的“步骤”维度上传递内核。
您将看到NLP中使用的Conv1D,其中steps
是句子中的单词数(填充到某个固定的最大长度)。单词可能会被编码为长度为4的向量。
这是一个示例语句:
jack .1 .3 -.52 |
is .05 .8, -.7 |<--- kernel is `convolving` along this dimension.
a .5 .31 -.2 |
boy .5 .8 -.4 \|/
在这种情况下,我们将输入设置为转换的方式:
maxlen = 4
input_dim = 3
model.add(Conv1D(2,2,activation='relu',input_shape=(maxlen, input_dim))
在您的情况下,您会将要素视为空间维度,每个要素的长度为1。(请参见下文)
这是您数据集中的一个例子
att1 .04 |
att2 .05 | < -- kernel convolving along this dimension
att3 .1 | notice the features have length 1. each
att4 .5 \|/ example have these 4 featues.
然后将Conv1D示例设置为:
maxlen = num_features = 4 # this would be 30 in your case
input_dim = 1 # since this is the length of _each_ feature (as shown above)
model.add(Conv1D(2,2,activation='relu',input_shape=(maxlen, input_dim))
如您所见,您的数据集必须重塑为(569,30,1)使用:
X = np.expand_dims(X, axis=2) # reshape (569, 30, 1)
# now input can be set as
model.add(Conv1D(2,2,activation='relu',input_shape=(30, 1))
这是一个可以运行的完整示例(我将使用Functional API)
from keras.models import Model
from keras.layers import Conv1D, Dense, MaxPool1D, Flatten, Input
import numpy as np
inp = Input(shape=(5, 1))
conv = Conv1D(filters=2, kernel_size=2)(inp)
pool = MaxPool1D(pool_size=2)(conv)
flat = Flatten()(pool)
dense = Dense(1)(flat)
model = Model(inp, dense)
model.compile(loss='mse', optimizer='adam')
print(model.summary())
# get some data
X = np.expand_dims(np.random.randn(10, 5), axis=2)
y = np.random.randn(10, 1)
# fit model
model.fit(X, y)
我正在尝试创建一个CNN来对数据进行分类。我的数据是X[N\u数据,N\u特征]我想创建一个能够对其进行分类的神经网络。我的问题是关于keras后端Conv1D的输入形状。 我想在上面重复一个过滤器。。假设有10个特征,然后为接下来的10个特征保持相同的权重。对于每个数据,我的卷积层将创建N\U特征/10个新神经元。我该怎么做?我应该在input\u形状中放置什么? 有什么建议吗?非常感谢。
我写了这段代码。我的输入形状是(100 x100 X3)。我是深度学习的新手。我花了这么多时间在这个问题上,但无法解决这个问题。任何帮助都非常感谢。 错误:在[15]:运行文件('/user/Project/SM/src/ann\u algo\u keras.py',wdir='/user/Project/SM/src')中随机启动突触权重:模型:“sequential\u 3” conv2d_1
我试图为我的TextView创建一个圆形背景,所以我创建了如下所示的形状样式。但是我需要有多种颜色和多种大小(而textSize保持不变),所以我需要设置样式中的宽度/高度。 根据我的理解…图层列表把所有的形状放在另一个上面?因为我需要在不同的地方调用它12次,所以拥有12个形状样式的XMLS似乎相当麻烦。
问题内容: 任一或可用于一个新的维度添加到一个数组。他们俩似乎都在创建一个视图,是否有任何理由或优势使用一个而不是另一个? ` 问题答案: 我看不出有太大差异的证据。您可以对非常大的阵列进行时间测试。基本上,两者都摆弄形状,甚至大步向前。 是访问此信息的好方法。例如: 两者都使用与原始缓冲区相同的缓冲区来创建视图。形状相同,但重塑不会改变。 让您指定。 并显示标志中的差异。 可能会更快,因为它所做
我使用的是Python Version3.8.7和PIL库。 我有一个数据表,其中包含了蓝图的各种元素的维度。两个主要元素是线条(组成轮廓)和标签(彩色矩形)。使用PIL,我能够绘制下面的图像。 但是,我想填写每个房间的颜色与属于它的相应标签相同。现在我只有构成轮廓线的尺寸(坐标)和标签的尺寸。每个维度值(坐标)如下:
问题内容: 我想切片一个numpy数组以获得最后一个维度中的第i个索引。对于3D阵列,这将是: 但是我正在编写一个函数,可以获取任意维度的数组,因此对于4D数组,我需要,依此类推。有没有一种方法可以获取任何数组的切片,而无需显式编写数组维? 问题答案: 存在或,它正是这样做的: 如果您想在方括号符号之外使用Ellipsis,则它是python对象。