Python 为什么Keras输入(shape=)需要dim=100向量的shape(1,)呢
我仍然试图围绕Python 为什么Keras输入(shape=)需要dim=100向量的shape(1,)呢,python,numpy,tensorflow,keras,Python,Numpy,Tensorflow,Keras,我仍然试图围绕keras.Input()的shape=参数进行思考-为了测试目的,我尝试进行最简单的虚拟网络和输入: import keras import numpy as np def build_model(shape): f_input = keras.Input(shape=(shape[1],)) # (100,) d1 = keras.layers.Dense(50, activation='tanh')(f_input) softmax = keras
keras.Input()
的shape=
参数进行思考-为了测试目的,我尝试进行最简单的虚拟网络和输入:
import keras
import numpy as np
def build_model(shape):
f_input = keras.Input(shape=(shape[1],)) # (100,)
d1 = keras.layers.Dense(50, activation='tanh')(f_input)
softmax = keras.layers.Dense(10, activation='softmax')(d1)
return keras.Model(f_input, softmax)
data = np.random.random((1000, 100))
model = build_model(data.shape)
model.compile(loss='mse', optimizer='SGD')
model.fit(x=data, y=data)
但keras仍然提出了错误:
ValueError:检查目标时出错:预期密集型_2具有形状(1,),但获得具有形状(100,)的数组。
我做错了什么?我的形状被定义为(,100),因为我期望一个任意批量大小的向量,其尺寸为100,如keras文档中所述。为什么会出现这种ValueError错误?我完全希望数组的形状是(100,)还是不是我是否必须在更改数据之前更改其形状
有什么提示吗 问题不在于您的输入形状。您以完全正确的方式给出了输入形状。问题在于,在
模型期间,您传递的是(1000*100)
维度向量,而不是(1100)
维度向量,而不是y
import numpy as np
def build_model(shape):
f_input = keras.layers.Input(shape=(shape[1],)) # (100,)
d1 = keras.layers.Dense(50, activation='tanh')(f_input)
softmax = keras.layers.Dense(10, activation='softmax')(d1)
return keras.Model(f_input, softmax)
data = np.random.random((1000, 100))
model = build_model(data.shape)
model.compile(loss='mse', optimizer='SGD')
model.fit(x=data, y=np.random.random((1000,))) #Change this to your actual y array!!
这对我来说运行很好。问题不在于您的输入形状。您以完全正确的方式给出了输入形状。问题在于,在模型期间,您传递的是(1000*100)
维度向量,而不是(1100)
维度向量,而不是y
import numpy as np
def build_model(shape):
f_input = keras.layers.Input(shape=(shape[1],)) # (100,)
d1 = keras.layers.Dense(50, activation='tanh')(f_input)
softmax = keras.layers.Dense(10, activation='softmax')(d1)
return keras.Model(f_input, softmax)
data = np.random.random((1000, 100))
model = build_model(data.shape)
model.compile(loss='mse', optimizer='SGD')
model.fit(x=data, y=np.random.random((1000,))) #Change this to your actual y array!!
这对我来说很好