我有这样的代码可以很好的工作。
input_shape = (1,3000,1000)
x = tf.random.normal(input_shape)
y = tf.keras.layers.Conv1D(32,3,activation='relu',input_shape=(3000,1000))(x)
print(y.shape)(1,2998,32)
我想在此基础上建立一个顺序模型,但当我尝试fit时,它在维度上给我带来了错误。
让我们来制作标签
l = np.random.randint(0,2,3000)然后是模型和编译器。
m = tf.keras.models.Sequential([
tf.keras.layers.Conv1D(32,3,activation='relu',input_shape=(3000,1000))
])
m.compile(optimizer='adam',metrics=['accuracy'],loss='categorical_crossentropy')最后,让我们来拟合这个模型
m.fit(x,l,epochs=2)错误
ValueError:数据基数是模棱两可的:X尺寸:1y大小: 3000,确保所有数组都包含相同数量的样本。
有人能帮我弄明白怎么回事吗?
发布于 2021-03-17 20:09:28
你有一个训练样本和3000张标签。X和y的形状为x= (1,3000,3000):y= (3000)
发布于 2021-03-17 21:51:45
import tensorflow as tf
import numpy as np
x = tf.random.normal((3000,1000,1))
y = np.random.randint(1,2,3000)
tf.keras.layers.Conv1D(10,2,input_shape=(3000,1000))(x)
m=tf.keras.models.Sequential([
tf.keras.layers.Conv1D(10,2,input_shape=(1000,1)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(1)
])
m.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
m.fit(x,y,epochs=2)在Keras Conv1D参考页Keras Conv1D中,它被写成:“当使用该层作为模型的第一层时,提供一个input_shape参数(整数元组或无,例如( 10,128)用于128个维向量的10个向量的序列,或(None,128个)用于128个维向量的可变长度序列。”
并且结束它的工作,但是如果conv1d被插入到一个顺序模型中,那么input_shape必须是0,1000,1。
https://stackoverflow.com/questions/66680440
复制相似问题