如何为多维数组创建 conv1d
How to create a conv1d for an array of multiple dimensions
这是我的问题:
假设我正在研究癌细胞,
为简化起见,假设我正在观察 1 个肿瘤。
每个肿瘤都会有它的平均超大细胞率,平均异常形状细胞率
我正在使用 12 个月内每月一次的数据
我在想的是每个肿瘤都有一个元组数组:
[(0.2,0.3),(0.3,0.3)..until I have 12]
这是这个问题的一些示例代码:
dataset = []
for i in range(1000):
train = []
for j in range(0,12):
train.append((np.random.rand(),np.random.rand()))
dataset.append(train)
model = keras.Sequential([
layers.Conv1D(filters=4, kernel_size=2, activation='relu',input_shape=tf.shape(dataset[0])),
layers.Dense(64, activation='relu'),
layers.Dense(1)])
model.predict(dataset)
当我尝试执行 model.predict() 时,我得到:
Negative dimension size caused by subtracting 2 from 1 for '{{node conv1d/conv1d}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](conv1d/conv1d/ExpandDims, conv1d/conv1d/ExpandDims_1)' with input shapes: [?,1,1,2], [1,2,2,4].
你知道我做错了什么吗?我尝试查看 tf 和 keras 文档并可以构建基本的感知器,但也许我不应该使用元组数组并使用其他东西。有什么想法吗?
keras/tensorflow 不处理元组数据格式。 keras 接受的最简单的数据格式是 numpy 数组。按照您的代码片段,这只是强加
dataset = []
for i in range(1000):
train = []
for j in range(0,12):
train.append([np.random.rand(), np.random.rand(), np.random.rand()]) # don't use tuple
dataset.append(train)
dataset = np.asarray(dataset) # convert to numpy array
print(dataset.shape)
model = Sequential([
layers.Conv1D(filters=4, kernel_size=2, activation='relu',
input_shape=dataset.shape[1:]),
layers.Dense(64, activation='relu'),
layers.Dense(1)])
model.predict(dataset).shape
这是我的问题:
假设我正在研究癌细胞, 为简化起见,假设我正在观察 1 个肿瘤。 每个肿瘤都会有它的平均超大细胞率,平均异常形状细胞率 我正在使用 12 个月内每月一次的数据 我在想的是每个肿瘤都有一个元组数组:
[(0.2,0.3),(0.3,0.3)..until I have 12]
这是这个问题的一些示例代码:
dataset = []
for i in range(1000):
train = []
for j in range(0,12):
train.append((np.random.rand(),np.random.rand()))
dataset.append(train)
model = keras.Sequential([
layers.Conv1D(filters=4, kernel_size=2, activation='relu',input_shape=tf.shape(dataset[0])),
layers.Dense(64, activation='relu'),
layers.Dense(1)])
model.predict(dataset)
当我尝试执行 model.predict() 时,我得到:
Negative dimension size caused by subtracting 2 from 1 for '{{node conv1d/conv1d}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](conv1d/conv1d/ExpandDims, conv1d/conv1d/ExpandDims_1)' with input shapes: [?,1,1,2], [1,2,2,4].
你知道我做错了什么吗?我尝试查看 tf 和 keras 文档并可以构建基本的感知器,但也许我不应该使用元组数组并使用其他东西。有什么想法吗?
keras/tensorflow 不处理元组数据格式。 keras 接受的最简单的数据格式是 numpy 数组。按照您的代码片段,这只是强加
dataset = []
for i in range(1000):
train = []
for j in range(0,12):
train.append([np.random.rand(), np.random.rand(), np.random.rand()]) # don't use tuple
dataset.append(train)
dataset = np.asarray(dataset) # convert to numpy array
print(dataset.shape)
model = Sequential([
layers.Conv1D(filters=4, kernel_size=2, activation='relu',
input_shape=dataset.shape[1:]),
layers.Dense(64, activation='relu'),
layers.Dense(1)])
model.predict(dataset).shape