测试 tensorflow 程序产生非常低的精度
test tensorflow program yielding very low accuracies
我对深度学习总体来说还是个新手,我尝试制作一个程序,该程序采用 1-12 中的数字,returns 基于 A、B、C、D 或 E 的字母表它是哪个值。生成器在生成时将每个数字随机分配给一个字母表,模型应该猜测分配给什么。我使用 HashingVectorization 将 aplhabets 转换为 5 个值的数组,我的代码如下:
from keras.models import Sequential
from keras.layers import Dense
import pandas as pd
from sklearn.feature_extraction.text import HashingVectorizer
# load the dataset
dataset = pd.read_csv('testbase.csv')
vectorizer = HashingVectorizer(n_features=5)
# split into input (X) and output (y) variables
input = dataset['col2']
result = vectorizer.transform(list(dataset['col1'])).toarray()
# define the keras model
model = Sequential()
model.add(Dense(5, input_dim=1, activation='relu'))
model.add(Dense(5, activation='relu'))
model.add(Dense(5, activation='sigmoid'))
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(input, result, epochs=150, batch_size=10)
# evaluate the keras model
_, accuracy = model.evaluate(input, result)
print('Accuracy: %.2f' % (accuracy*100))
有人能知道为什么会这样吗?
binary_crossentropy
不是一个很好的损失函数,因为你没有进行二元分类(因为你有五个类别要分类)。我会先尝试使用分类交叉熵,如果仍然产生不好的结果,请通过调整学习率、优化器等进行试验。
我对深度学习总体来说还是个新手,我尝试制作一个程序,该程序采用 1-12 中的数字,returns 基于 A、B、C、D 或 E 的字母表它是哪个值。生成器在生成时将每个数字随机分配给一个字母表,模型应该猜测分配给什么。我使用 HashingVectorization 将 aplhabets 转换为 5 个值的数组,我的代码如下:
from keras.models import Sequential
from keras.layers import Dense
import pandas as pd
from sklearn.feature_extraction.text import HashingVectorizer
# load the dataset
dataset = pd.read_csv('testbase.csv')
vectorizer = HashingVectorizer(n_features=5)
# split into input (X) and output (y) variables
input = dataset['col2']
result = vectorizer.transform(list(dataset['col1'])).toarray()
# define the keras model
model = Sequential()
model.add(Dense(5, input_dim=1, activation='relu'))
model.add(Dense(5, activation='relu'))
model.add(Dense(5, activation='sigmoid'))
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(input, result, epochs=150, batch_size=10)
# evaluate the keras model
_, accuracy = model.evaluate(input, result)
print('Accuracy: %.2f' % (accuracy*100))
有人能知道为什么会这样吗?
binary_crossentropy
不是一个很好的损失函数,因为你没有进行二元分类(因为你有五个类别要分类)。我会先尝试使用分类交叉熵,如果仍然产生不好的结果,请通过调整学习率、优化器等进行试验。