Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 深度学习-保持较低的准确性_Python_Tensorflow_Keras_Deep Learning - Fatal编程技术网

Python 深度学习-保持较低的准确性

Python 深度学习-保持较低的准确性,python,tensorflow,keras,deep-learning,Python,Tensorflow,Keras,Deep Learning,我是Python新手(虽然不熟悉编程——我通常用JavaScript编程),我对AI开发非常感兴趣。 最近,我一直在尝试通过以下方式开发一种深度学习算法 我的目标是根据包含一个大列表的CSV文件预测一组7个数字,每行也有7个数字。名单的顺序很重要 我最终得到了以下代码: 从keras.models导入 从keras.layers导入稠密 从sklearn.model\u选择导入列车\u测试\u拆分 从numpy导入loadtxt,随机 随机。种子(种子) dataset=loadtxt(“dat

我是Python新手(虽然不熟悉编程——我通常用JavaScript编程),我对AI开发非常感兴趣。
最近,我一直在尝试通过以下方式开发一种深度学习算法

我的目标是根据包含一个大列表的CSV文件预测一组7个数字,每行也有7个数字。名单的顺序很重要

我最终得到了以下代码:

从keras.models导入
从keras.layers导入稠密
从sklearn.model\u选择导入列车\u测试\u拆分
从numpy导入loadtxt,随机
随机。种子(种子)
dataset=loadtxt(“data/Lotto.csv”,delimiter=“,”,skiprows=1)
X=数据集[:,0:7]
Y=数据集[:,6]
(X_序列,X_测试,Y_序列,Y_测试)=序列测试分割(X,Y,测试大小=0.33,随机状态=4)
模型=顺序()
添加(密集型(8,输入尺寸=7,内核初始化器=uniform,激活=relu”))
添加(稠密(6,kernel_initializer=“uniform”,activation=“relu”))
添加(稠密(1,kernel_initializer=“uniform”,activation=“sigmoid”))
编译(loss=“binary\u crossentropy”,optimizer=“adam”,metrics=[“accurity”])
模型拟合(X_序列,Y_序列,验证数据=(X_检验,Y_检验),历元=100,批量大小=5,随机数=False)
分数=模型评估(X_测试、Y_测试)
打印(“精度:%.2f%%”%(分数[1]*100))
在Google Colaboratory中运行之后,虽然我没有得到任何错误,但我注意到,对于每个历元,丢失结果都没有改变,因此,我的准确率一直很低(~6%)


我做错了什么?

尝试将优化器更改为
RMSprop
,学习率约为0.0001。 RMSprop通常比大多数优化器更好,并且比其他优化器提供更好的精度和更少的损失。您也可以尝试SGD,它也是一个很好的优化器。 同时增加参数的数量,因为更多的可训练参数会使模型得到更精确的训练,并给出更精确的预测。 您可以将代码更新为tensorflow 2.x,并将代码更改为:

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
from sklearn.model_selection import train_test_split
from numpy import loadtxt, random

#Rest of the code
....... 
.......
.......

model = Sequential()
model.add(Dense(64, input_shape=(7,), activation='relu', kernel_initializer='uniform'))
model.add(Dense(64, kernel_initializer="uniform", activation="relu"))
model.add(Dense(1, kernel_initializer="uniform", activation="sigmoid"))

model.compile(loss="binary_crossentropy", optimizer=tf.keras.optimizers.RMSprop(learning_rate=0.0001), metrics=["accuracy"])

model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=100, batch_size=5, shuffle=False)
scores = model.evaluate(X_test, Y_test)
print("Accuracy: %.2f%%" %(scores[1] * 100))

如果我错了,请纠正我,但从外观上看,您的输入是一个由7个数字组成的列表,您希望输出该列表中的第7个数字。现在,通过在最后一层中使用sigmoid激活,您将模型输出限制为间隔(0,1)。您确定您的数据在此时间间隔内吗


而且,您的模型对于该任务来说非常复杂。你真的只需要一个没有激活或偏差的致密层就可以做到这一点。

可能性是无穷的,从你有多少个数据点开始,甚至从是否有一个模式开始。这里没有银弹。作为一个建议,首先尝试一个更简单的模型,不要跳转到神经网络。你需要先培养很多背景知识,然后尝试不同的东西。不管你是否意识到,你提出的问题坦率地说非常广泛,很难回答。为了保持简单,如果你正在学习,现在不要使用你自己的数据集(我假设你正在这样做)。从一些示例数据集开始,这样在学习诀窍的同时就可以消除“数据问题”。我将尝试从遵循特定数据集的教程中学习。谢谢你的指导!你有多少手写数字?我从某个网站下载了一个CSV文件。我想用深度学习模型来分析和预测下一步会发生什么。我实际上不知道代码的其余部分应该是什么。在我的帖子中,我只是简单地遵循了一个教程,而不知道我在做什么。我对人工智能这个话题很好奇,但我从来没有在发帖之前编写过一个,直到现在,它只是理论上的。
#代码的其余部分应该是什么?我应该保持我的代码不变吗?“代码的其余部分”是随机的。在上面的代码中,直到train\u test\u分割部分,没有什么不同。试着这样编码,你的代码的整体准确度可能会增加近10-15%。问题是,我不太确定Y轴上需要什么。X轴应该包含数字集,对吗?但是Y轴应该包含什么?通常,x是所有数字列,Y是结果。我的目标是能够根据一个大列表预测一组7个数字,其中每个条目都是一组7个数字。每次输入都应该是接下来的7个数字。我不知道如何做到这一点。我上面的代码取自链接文章教程。这不是你在这里要做的。但如果我理解正确,你想根据X[I]预测X[I+1]会是什么?你有什么样的数据,因为从你的代码来看,你使用的是彩票数据,而这些数据可能没有你想要的那种相关性。最重要的是,train_test_split在默认情况下会进行洗牌。正确,我正在使用我说过的,这是我第一次尝试理解如何编写人工智能。到目前为止,一切都只是理论上的——所以这对meWell来说是一个深潜,除非彩票使用一种非常愚蠢的方式来抽奖,否则你真的不能指望从你的模型中得到比随机性更好的结果。然而,在你发布的代码中,准确率低的原因可能是乙状结肠(但是你没有训练从X[i]预测X[i+1],而是从X[i,0:7]预测X[i,6])。不过别担心,你会成功的。有很多很好的教程可以帮助你。