繁体   English   中英

Keras 顺序 model 适合形状

[英]Keras Sequential model fit shape

我可以在其他线程中找到类似的问题,但我无法解决我的问题,所以我希望在这里有答案。 我正在尝试使用以下代码训练 model:

''' split the sample '''
X_train, X_test, y_train, y_test = train_test_split(csvFile['Tweet'], csvFile['sent_score'], test_size= 0.20, shuffle=False)
'''add layers to define the input dimension of our feature vectors'''
input_dim = len(X_train)  # Number of features

model = Sequential()
model.add(layers.Dense(10, input_dim=input_dim, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

''' specifies the optimizer and the loss function '''
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())

X_train = np.asarray(X_train)
y_train = np.asarray(y_train)
X_test = np.asarray(X_test)
y_test = np.asarray(y_test)

''' fit the model '''
history = model.fit(X_train, y_train, epochs=100, verbose=False, validation_data=(X_test, y_test), batch_size=10)

我有以下错误:

Traceback (most recent call last):
  File "test.py", line 209, in <module>
    history = model.fit(X_train, y_train, epochs=100, verbose=False, validation_data=(X_test, y_test), batch_size=10)
  File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/keras/engine/training.py", line 952, in fit
    batch_size=batch_size)
  File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/keras/engine/training.py", line 751, in _standardize_user_data
    exception_prefix='input')
  File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/keras/engine/training_utils.py", line 138, in standardize_input_data
    str(data_shape))
ValueError: Error when checking input: expected dense_1_input to have shape (23136,) but got array with shape (1,)

当我尝试按照错误(23136)的要求进行整形时。 我得到了相反的错误如下。 可能这里的关键是错误不在同一层上。 任何帮助,将不胜感激。

   ValueError: Error when checking input: expected dense_2_input to have shape (1,) but got array with shape (23136,)

input_dim = len(X_train)不是特征数量而是样本数量...改成input_dim = X_train.shape[-1]

这是一个虚拟示例:

X = np.random.uniform(0,1, 23136)
y = np.random.uniform(0,1, 23136)

input_dim = 1 # or X.shape[-1] if more feature are present

model = Sequential()
model.add(layers.Dense(10, input_dim=input_dim, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X,y, epochs=10)

你可以试试这个:

from tensorflow.keras.layers import Reshape    

model = Sequential()
model.add(Reshape((X_train.shape[1],1)))
model.add(layers.Dense(10, input_dim=(X_train.shape[1],1), activation='relu'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM