Keras,具有二元分类的简单 CNN 不收敛——最小示例(来自 DeepLizard)
Keras, simple CNN with binary classification doesn't converge — minimal example (from DeepLizard)
我是 NN 和 Keras 的新手。我已经尝试了 DeepLizard 的 this tutorial 并一直关注它,直到这位女士在大约 30 分钟内展示了第一个训练结果。我完全按照步骤操作,除了带有 'shuffle' 的行,因为这不是应该使用的方式(据我所知)。这是我的代码:
import numpy as np
import random as random
from random import randint
from sklearn.preprocessing import MinMaxScaler
from random import shuffle
train_labels = []
train_samples = []
for i in range(50):
random_younger = randint(13,64)
train_samples.append(random_younger)
train_labels.append(1)
random_older = randint(65,100)
train_samples.append(random_older)
train_labels.append(0)
for i in range (1000):
random_younger = randint(13,64)
train_samples.append(random_younger)
train_labels.append(0)
random_older = randint(65,100)
train_samples.append(random_older)
train_labels.append(1)
train_samples = np.array(train_samples)
train_labels = np.array(train_labels)
shuffle(train_samples)
shuffle(train_labels)
scaler = MinMaxScaler(feature_range = (0,1))
scaled_train_samples = scaler.fit_transform(train_samples. reshape(-1,1))
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import categorical_crossentropy
model = Sequential([Dense(units=16, input_shape=(1,), activation='relu'),
Dense(units=32, activation='relu'),
Dense(units=2, activation='softmax')])
model.summary()
model.compile(optimizer=Adam(learning_rate=0.0001),loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x=scaled_train_samples, y=train_labels, batch_size=5, epochs=30, shuffle=True, verbose=2)
我的神经网络并没有学会一直保持在 50% 的准确率。我试图改变 #of 层和时代,我检查了数据类型和结构。有人可以帮助我生命中第一个最小的例子吗?谢谢!
如前所述,我正在独立洗牌 x 和 y。在教程中,我参考了“shuffle”的使用方式,它不应该工作,请参阅 documentation。我的解决方案:
c = list(zip(train_samples, train_labels))
shuffle(c)
train_samples, train_labels = zip(*c)
train_samples = np.array(train_samples)
train_labels=np.array(train_labels)
我是 NN 和 Keras 的新手。我已经尝试了 DeepLizard 的 this tutorial 并一直关注它,直到这位女士在大约 30 分钟内展示了第一个训练结果。我完全按照步骤操作,除了带有 'shuffle' 的行,因为这不是应该使用的方式(据我所知)。这是我的代码:
import numpy as np
import random as random
from random import randint
from sklearn.preprocessing import MinMaxScaler
from random import shuffle
train_labels = []
train_samples = []
for i in range(50):
random_younger = randint(13,64)
train_samples.append(random_younger)
train_labels.append(1)
random_older = randint(65,100)
train_samples.append(random_older)
train_labels.append(0)
for i in range (1000):
random_younger = randint(13,64)
train_samples.append(random_younger)
train_labels.append(0)
random_older = randint(65,100)
train_samples.append(random_older)
train_labels.append(1)
train_samples = np.array(train_samples)
train_labels = np.array(train_labels)
shuffle(train_samples)
shuffle(train_labels)
scaler = MinMaxScaler(feature_range = (0,1))
scaled_train_samples = scaler.fit_transform(train_samples. reshape(-1,1))
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import categorical_crossentropy
model = Sequential([Dense(units=16, input_shape=(1,), activation='relu'),
Dense(units=32, activation='relu'),
Dense(units=2, activation='softmax')])
model.summary()
model.compile(optimizer=Adam(learning_rate=0.0001),loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x=scaled_train_samples, y=train_labels, batch_size=5, epochs=30, shuffle=True, verbose=2)
我的神经网络并没有学会一直保持在 50% 的准确率。我试图改变 #of 层和时代,我检查了数据类型和结构。有人可以帮助我生命中第一个最小的例子吗?谢谢!
如前所述,我正在独立洗牌 x 和 y。在教程中,我参考了“shuffle”的使用方式,它不应该工作,请参阅 documentation。我的解决方案:
c = list(zip(train_samples, train_labels))
shuffle(c)
train_samples, train_labels = zip(*c)
train_samples = np.array(train_samples)
train_labels=np.array(train_labels)