首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是Keras Sequential模型学习吗?

这是Keras Sequential模型学习吗?
EN

Stack Overflow用户
提问于 2020-01-04 00:20:33
回答 2查看 78关注 0票数 0

我正在尝试构建一个适合我的数据的Keras Sequential模型。然而,我在选择图层和设置输入形状时遇到了麻烦。我的模型精度从0.4943开始,并且不会在不同时期之间发生变化。看起来我的模型不是在学习。

数据如下所示:

代码语言:javascript
复制
X = [[[0.00000000e+00 0.00000000e+00]
  [1.82562794e-01 6.81775296e-01]
  [1.13191538e+00 1.37766573e+00]
  ...
  [5.31509230e+01 4.88222520e+01]
  [5.38463488e+01 4.92077884e+01]
  [5.43891348e+01 4.98190918e+01]]

 [[0.00000000e+00 0.00000000e+00]
  [4.81657107e-01 4.62969773e-01]
  [1.33733394e+00 8.20860280e-01]
  ...
  [5.00154741e+01 4.49145568e+01]
  [5.06145436e+01 4.58551323e+01]
  [5.14753045e+01 4.66484598e+01]]

 [[0.00000000e+00 0.00000000e+00]
  [1.24209617e-01 3.41455813e-01]
  [6.62306377e-01 9.70226310e-01]
  ...
  [4.59534909e+01 5.14811676e+01]
  [4.65830639e+01 5.15458682e+01]
  [4.69169909e+01 5.18978055e+01]]

 ...

 [[0.00000000e+00 0.00000000e+00]
  [8.37513698e-01 2.36545136e-01]
  [2.09606414e+00 2.18579855e+00]
  ...
  [9.33516241e+01 9.02639438e+01]
  [9.48198248e+01 9.09696034e+01]
  [9.56924057e+01 9.11994364e+01]]

 [[0.00000000e+00 0.00000000e+00]
  [1.16628793e+00 3.07939104e-01]
  [2.90856042e+00 1.93300849e+00]
  ...
  [9.50615310e+01 9.54437621e+01]
  [9.64466547e+01 9.62387560e+01]
  [9.84132452e+01 9.68517902e+01]]

 [[0.00000000e+00 0.00000000e+00]
  [7.07518408e-02 1.63762559e+00]
  [1.47380576e+00 3.01519861e+00]
  ...
  [9.56341427e+01 8.22719298e+01]
  [9.75264435e+01 8.41242858e+01]
  [9.85001877e+01 8.44169342e+01]]]

X.shape = (2000, 100, 2)

y = [0. 0. 0. ... 1. 1. 1.]

y.shape = (2000,)

下面是模型代码:

代码语言:javascript
复制
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(100,2)),
    keras.layers.Dense(16, activation=tf.nn.relu),
    keras.layers.Dense(16, activation=tf.nn.relu),
    keras.layers.Dense(1, activation=tf.nn.sigmoid),
])

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

h = model.fit(X_train, y_train, epochs=50, batch_size=3, shuffle=True)

test_loss, test_acc = model.evaluate(X_test, y_test)
print('Test accuracy:', test_acc)

我正在试着做一个二进制分类。我的模型有问题吗?任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2020-01-04 01:45:23

我注意到你的batch_size=3不是一个好的选择。尝试使用不同的架构/参数进行实验。下面是一个简单的例子:

代码语言:javascript
复制
model = Sequential()
# model.add(Dense(256, input_dim=2, activation='relu'))
model.add(Dense(256, input_shape=X.shape, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu')
model.add(Dense(1, activation='sigmoid'))

model.compile(optimizer='adam',
              loss='binary_crossentropy',
               metrics=['accuracy'])

model.fit(X_train, y_train, epochs=10, batch_size=64, shuffle=True)

工作示例:

代码语言:javascript
复制
from keras import Sequential
from keras.layers import Dense, Dropout

# sample data, 100 samples
X_train = np.random.random((100,2)) 
y_train = np.random.randint(2, size=(100, 1)) 

model = Sequential()
model.add(Dense(256, input_dim=2, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(optimizer='adam',
              loss='binary_crossentropy',
               metrics=['accuracy'])

model.fit(X_train, y_train, epochs=10, batch_size=2)
model.predict(X_train).shape # (100, 1)
票数 2
EN

Stack Overflow用户

发布于 2020-01-14 16:33:20

在解决了这个问题之后,我意识到将输入形状更改为(200,)可以解决这个问题。当您向数据添加维度时,事情会变得复杂。谢谢你@YOLO帮助我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59581890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档