首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Keras多层神经网络精度

Keras多层神经网络精度
EN

Stack Overflow用户
提问于 2019-05-26 20:37:20
回答 3查看 89关注 0票数 0

我使用Keras和precipitation data in Australia构建了一个简单的多层神经网络。该代码接受4个输入列:['MinTemp', 'MaxTemp', 'Rainfall', 'WindGustSpeed'],并根据RainTomorrow输出进行训练。

我已经将数据划分到训练/测试桶中,将所有值转换为0 <= n <= 1。当我尝试运行model.fit时,我的损失值稳定在~13.2,但我的准确率始终是0.0。记录拟合间隔的示例如下:

代码语言:javascript
运行
AI代码解释
复制
...
Epoch 37/200
113754/113754 [==============================] - 0s 2us/step - loss: -13.1274 - acc: 0.0000e+00 - val_loss: -16.1168 - val_acc: 0.0000e+00
Epoch 38/200
113754/113754 [==============================] - 0s 2us/step - loss: -13.1457 - acc: 0.0000e+00 - val_loss: -16.1168 - val_acc: 0.0000e+00
Epoch 39/200
113754/113754 [==============================] - 0s 2us/step - loss: -13.1315 - acc: 0.0000e+00 - val_loss: -16.1168 - val_acc: 0.0000e+00
Epoch 40/200
113754/113754 [==============================] - 0s 2us/step - loss: -13.1797 - acc: 0.0000e+00 - val_loss: -16.1168 - val_acc: 0.0000e+00
Epoch 41/200
113754/113754 [==============================] - 0s 2us/step - loss: -13.1844 - acc: 0.0000e+00 - val_loss: -16.1169 - val_acc: 0.0000e+00
Epoch 42/200
113754/113754 [==============================] - 0s 2us/step - loss: -13.2205 - acc: 0.0000e+00 - val_loss: -16.1169 - val_acc: 0.0000e+00
Epoch 43/200
...

我如何修改下面的脚本,使我的准确率提高,并且我的预测输出返回一个介于0和1之间的值(0:无雨,1:下雨)?

代码语言:javascript
运行
AI代码解释
复制
import keras
import sklearn.model_selection
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler

labelencoder = LabelEncoder()

# read data, replace NaN with 0.0
csv_data = pd.read_csv('weatherAUS.csv', header=0)
csv_data = csv_data.replace(np.nan, 0.0, regex=True)

# Input/output columns scaled to 0<=n<=1
x = csv_data.loc[:, ['MinTemp', 'MaxTemp', 'Rainfall', 'WindGustSpeed']]
y = labelencoder.fit_transform(csv_data['RainTomorrow'])
scaler_x = MinMaxScaler(feature_range =(-1, 1))
x = scaler_x.fit_transform(x)
scaler_y = MinMaxScaler(feature_range =(-1, 1))
y = scaler_y.fit_transform([y])[0]

# Partitioned data for training/testing
x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.2)

# model
model = keras.models.Sequential() 
model.add( keras.layers.normalization.BatchNormalization(input_shape=tuple([x_train.shape[1]])))
model.add(keras.layers.core.Dense(4, activation='relu'))
model.add(keras.layers.core.Dropout(rate=0.5))
model.add(keras.layers.normalization.BatchNormalization())
model.add(keras.layers.core.Dense(4, activation='relu'))
model.add(keras.layers.core.Dropout(rate=0.5))
model.add(keras.layers.normalization.BatchNormalization())
model.add(keras.layers.core.Dense(4, activation='relu'))
model.add(keras.layers.core.Dropout(rate=0.5))
model.add(keras.layers.core.Dense(1,   activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=["accuracy"])

callback_early_stopping = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='auto')

model.fit(x_train, y_train, batch_size=1024, epochs=200, validation_data=(x_test, y_test), verbose=1, callbacks=[callback_early_stopping])

y_test = model.predict(x_test.values)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-26 20:44:03

如您所见,您在神经网络输出(最后一层)中使用的sigmoid激活函数的范围是从0到1。

请注意,您的标签(y)已重新缩放为-1到1。

我建议您将y范围更改为0到1,并保留sigmoid输出。

票数 1
EN

Stack Overflow用户

发布于 2019-05-27 03:21:20

因此,sigmoid的范围是从0到1。您的MinMaxscaler将数据从-1缩放到1。

您可以通过将输出层中的'sigmoid‘替换为' tanh’来修复它,因为tanh的输出范围为-1到1

票数 1
EN

Stack Overflow用户

发布于 2019-05-27 03:44:41

其他两个答案都可以用来解决这样一个事实,即您的网络输出与y向量值不在同一范围内。将最终层调整为tanh激活,或将y-vector range更改为0,1。

但是,您的网络损失函数和度量是为了分类目的而定义的,因为您正在尝试回归( -1,1之间的连续值)。最常见的损失函数和精度度量是平均平方误差,或平均绝对误差。因此,我建议您更改以下内容:

代码语言:javascript
运行
AI代码解释
复制
model.compile(loss='mse', optimizer='rmsprop', metrics=['mse, 'mae'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56317174

复制
相关文章
keras多层感知器识别手写数字执行预测代码_感知机模型多层神经网络
注:以下模型及其说明来自于《TensorFlow+Keras深度学习人工智能实践应用》林大贵 著
全栈程序员站长
2022/11/07
4960
[手把手系列之二]实现多层神经网络
训练集: \(X = [x^{(1)},x^{(2)},...,x^{(i)},....,x^{(m)}]\) ;对应标签:\(Y=[y^{(1)},y^{(2)},...,y^{(i)},...,y^{(m)}]\) ;
用户1631856
2018/09/27
1.3K0
[手把手系列之二]实现多层神经网络
训练集: X=[x(1),x(2),...,x(i),....,x(m)]X=[x(1),x(2),...,x(i),....,x(m)]X = [x^{(1)},x^{(2)},...,x^{(i)},....,x^{(m)}] ;对应标签:Y=[y(1),y(2),...,y(i),...,y(m)]Y=[y(1),y(2),...,y(i),...,y(m)]Y=[y^{(1)},y^{(2)},...,y^{(i)},...,y^{(m)}] ;
公众号-不为谁写的歌
2020/07/22
5490
深度学习-多层神经网络
您将编写两个辅助函数来初始化模型的参数。第一个函数将用于初始化双层模型的参数。第二个将把这个初始化过程推广到L层。
freesan44
2021/10/12
4480
对于多层神经网络,BP算法的直接作用_什么是多层神经网络
转载;https://www.cnblogs.com/liuwu265/p/4696388.html
全栈程序员站长
2022/09/20
7390
对于多层神经网络,BP算法的直接作用_什么是多层神经网络
用多层感知机识别手写体(Keras)
独热编码即 One-Hot-coding,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。例如对六个状态进行编码:自然顺序码为 000,001,010,011,100,101独热编码则是 000001,000010,000100,001000,010000,100000
用户3577892
2020/06/11
2.7K0
多层感知器神经网络实例_多层感知器与bp神经网络
作者|Vivek Patel 编译|Flin 来源|towardsdatascience
全栈程序员站长
2022/09/27
5450
多层感知器神经网络实例_多层感知器与bp神经网络
多层神经网络识别猫图片
之前博客地址:https://blog.csdn.net/qq_33873431/article/details/101672423
lovelife110
2021/01/14
6500
多层神经网络识别猫图片
多层感知器(神经网络)
原文:https://maoli.blog.csdn.net/article/details/88777955
润森
2020/02/25
1.3K0
多层感知器(神经网络)
多层感知机和神经网络_CNN采用多层感知机进行分类
ESN部分就不多做介绍了,你应该了解的,下面我们对ESN和BP改进和极限学习改进分别进行修改和说明,并进行仿真。
全栈程序员站长
2022/09/27
4210
keras卷积层_keras实现全卷积神经网络
分组卷积在pytorch中比较容易实现,只需要在卷积的时候设置group参数即可 比如设置分组数为2
全栈程序员站长
2022/11/17
3600
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
它由节点层组成,其中每个节点连接到上一层的所有输出,每个节点的输出连接到下一层节点的所有输入。
拓端
2020/11/03
2.4K0
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
用 Tensorflow 实现简单多层神经网络
[1]ReLU激活函数/L1范数版本: https://github.com/Asurada2015/TF_Cookbook/blob/master/06_Neural_Networks/06_Using_Multiple_Layers/06_using_a_multiple_layer_network.py
演化计算与人工智能
2020/08/14
1K0
用 Tensorflow 实现简单多层神经网络
10 | 多层神经网络、激活函数、学习能力
前面的训练过程我们已经了解的差不多了,但是我们所用到的模型还是一个线性模型,这一小节就让我们正经开始神经网络的搭建,研究怎么把之前的线性模型替换成神经网络来解决我们的问题。
机器学习之禅
2022/07/11
3160
10 | 多层神经网络、激活函数、学习能力
神经网络基础及Keras入门
人工神经网络,简称神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。
小歪
2018/12/17
5810
多层感知器神经网络速成课
人工神经网络是一个令人神往的研究领域,尽管当新手入门的时候它们可能会令人生畏。
花落花飞去
2018/02/05
1.1K0
多层感知器神经网络速成课
使用反向传播训练多层神经网络的原理
文章《Principles of training multi-layer neural network using backpropagation 》提供了直观理解反向传播的完整例子。以下是原文翻译。
用户9624935
2022/04/02
7490
使用反向传播训练多层神经网络的原理
深度学习词汇表(四)
Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:
AiTechYun
2019/05/13
8640
深度学习词汇表(四)
Keras 训练简单的深度神经网络
机器学习训练营最近的作业都是使用Keras,所以最近去翻了下文档,这里记录一下学习栗子。(官网有中文文档)
小歪
2018/12/13
8160
PyTorch如何实现多层全连接神经网络
连接神经网络模型是一种多层感知机(MLP),感知机的原理是寻找类别间最合理、最具有鲁棒性的超平面,最具代表的感知机是SVM支持向量机算法。神经网络同时借鉴了感知机和仿生学,通常来说,动物神经接受一个信号后会发送各个神经元,各个神经元接受输入后根据自身判断,激活产生输出信号后汇总从而实现对信息源实现识别、分类,一个典型的神经网络如下图所示:
算法与编程之美
2023/01/03
9230
PyTorch如何实现多层全连接神经网络

相似问题

如何交替训练多层神经网络?(Keras)

10

Keras卷积神经网络验证精度不变

10

利用Keras提高神经网络的精度

12

Keras神经网络的零精度训练

53

用Python计算Keras神经网络的精度

122
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文