使用神经元网络进行分类
Classification using neuronal networks
我已经建立了一个用于分类的神经网络,但是在尝试编译时我遇到了输入和输出维度的问题:
from keras.models import Sequential
from keras.layers import Dense
# data splited into input (X) and output (y) variables
model = Sequential()
model.add(Dense(12, input_dim=456, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(8, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
这是我的 y
和 X
的尺寸
print(y.shape, X.shape)
(8000, 1) (8000, 456, 3)
我有 8000 个子集,其中包含 456 个粒子 (x,y,z);
我有 y 范围从 0 到 7 的标签;这也是我的输出层有 8 个节点的原因。
但是当我适合
model.fit(X, y, epochs=15, batch_size=10)
我不明白为什么会出现这个错误:
ValueError: Error when checking input: expected dense_26_input to have 2 dimensions, but got array with shape (8000, 456, 3)
有什么建议吗?
要回答你的问题,你可以通过以下方式实现你想要的:
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
model.add(Dense(12, input_shape=(456,3), activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(8, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
编辑:
我认为您正在寻找的是那种类型的架构:
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten
model = Sequential()
model.add(Dense(12, input_shape=(456,3), activation='relu'))
model.add(Flatten())
model.add(Dense(8, activation='relu'))
model.add(Dense(8, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
这样只输出8个标签
我已经建立了一个用于分类的神经网络,但是在尝试编译时我遇到了输入和输出维度的问题:
from keras.models import Sequential
from keras.layers import Dense
# data splited into input (X) and output (y) variables
model = Sequential()
model.add(Dense(12, input_dim=456, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(8, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
这是我的 y
和 X
print(y.shape, X.shape)
(8000, 1) (8000, 456, 3)
我有 8000 个子集,其中包含 456 个粒子 (x,y,z); 我有 y 范围从 0 到 7 的标签;这也是我的输出层有 8 个节点的原因。
但是当我适合
model.fit(X, y, epochs=15, batch_size=10)
我不明白为什么会出现这个错误:
ValueError: Error when checking input: expected dense_26_input to have 2 dimensions, but got array with shape (8000, 456, 3)
有什么建议吗?
要回答你的问题,你可以通过以下方式实现你想要的:
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
model.add(Dense(12, input_shape=(456,3), activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(8, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
编辑:
我认为您正在寻找的是那种类型的架构:
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten
model = Sequential()
model.add(Dense(12, input_shape=(456,3), activation='relu'))
model.add(Flatten())
model.add(Dense(8, activation='relu'))
model.add(Dense(8, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
这样只输出8个标签