本帖训练一个简单的神经网络模型,用来判断声音是男是女。

本帖数据集取自voice-gender项目,这个项目使用了n种分类模型,并比较了准确率,但是它没有使用神经网络模型,本帖算是一个补充。

数据集

这个数据集是经过R语言处理过的,它提取出了.WAV文件的一些声音属性。如果你想自己从wav文件中提取声音属性,参看voice-gender项目中一个叫sound.R源码文件。

数据集字段:”meanfreq”,”sd”,”median”,”Q25″,”Q75″,”IQR”,”skew”,”kurt”,”sp.ent”,”sfm”,”mode”,”centroid”,”meanfun”,”minfun”,”maxfun”,”meandom”,”mindom”,”maxdom”,”dfrange”,”modindx”,”label”。最后一个字段标记了是男声还是女声,前面字段是声音属性。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

import os
import requests
import pandas as pd
import numpy as np
import random
import tensorflow as tf  # 0.12
from sklearn.model_selection import train_test_split
# 下载数据集
if not os.path.exists('voice.csv'):
url = 'http://blog.topspeedsnail.com/wp-content/uploads/2016/12/voice.csv'
data = requests.get(url).content
with open('voice.csv', 'wb') as f:
f.write(data)
voice_data = pd.read_csv('voice.csv')
#print(voice_data.head())
#print(voice_data.tail())
voice_data = voice_data.values
# 分离声音特性和分类
voices = voice_data[:, :-1]
labels = voice_data[:, -1:]  #  ['male']  ['female']
# 把分类转为one-hot
labels_tmp = []
for label in labels:
tmp = []
if label[0] == 'male':
tmp = [1.0, 0.0]
else:  # 'female'
tmp = [0.0, 1.0]
labels_tmp.append(tmp)
labels = np.array(labels_tmp)
# shuffle
voices_tmp = []
lables_tmp = []
index_shuf = [i for i in range(len(voices))]
random.shuffle(index_shuf)
for i in index_shuf:
    voices_tmp.append(voices[i])
    lables_tmp.append(labels[i])
voices = np.array(voices_tmp)
labels = np.array(lables_tmp)
train_x, test_x, train_y, test_y = train_test_split(voices, labels, test_size=0.1)
banch_size = 64
n_banch = len(train_x) // banch_size
X = tf.placeholder(dtype=tf.float32, shape=[None, voices.shape[-1]])  # 20
Y = tf.placeholder(dtype=tf.float32, shape=[None, 2])
# 3层(feed-forward)
def neural_network():
w1 = tf.Variable(tf.random_normal([voices.shape[-1], 512], stddev=0.5))
b1 = tf.Variable(tf.random_normal([512]))
output = tf.matmul(X, w1) + b1
w2 = tf.Variable(tf.random_normal([512, 1024],stddev=.5))
b2 = tf.Variable(tf.random_normal([1024]))
output = tf.nn.softmax(tf.matmul(output, w2) + b2)
w3 = tf.Variable(tf.random_normal([1024, 2],stddev=.5))
b3 = tf.Variable(tf.random_normal([2]))
output = tf.nn.softmax(tf.matmul(output, w3) + b3)
return output
# 训练神经网络
def train_neural_network():
output = neural_network()
cost = tf.reduce_mean(tf.reduce_sum(tf.nn.softmax_cross_entropy_with_logits(output, Y)))
lr = tf.Variable(0.001, dtype=tf.float32, trainable=False)
opt = tf.train.AdamOptimizer(learning_rate=lr)
var_list = [t for t in tf.trainable_variables()]
train_step = opt.minimize(cost, var_list=var_list)
#saver = tf.train.Saver(tf.global_variables())
#saver.restore(sess, tf.train.latest_checkpoint('.'))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
#summary_writer = tf.train.SummaryWriter('voices')
for epoch in range(200):
sess.run(tf.assign(lr, 0.001 * (0.97 ** epoch)))
for banch in range(n_banch):
voice_banch = train_x[banch*banch_size:(banch+1)*(banch_size)]
label_banch = train_y[banch*banch_size:(banch+1)*(banch_size)]
_, loss = sess.run([train_step, cost], feed_dict={X: voice_banch, Y: label_banch})
print(epoch, banch, loss)
# 准确率
prediction = tf.equal(tf.argmax(output, 1), tf.argmax(Y, 1))
accuracy = tf.reduce_mean(tf.cast(prediction, dtype=tf.float32))
accuracy = sess.run(accuracy, feed_dict={X: test_x, Y: test_y})
print("准确率", accuracy)
#prediction = sess.run(output, feed_dict={X: test_x})
train_neural_network()

TensorFlow练习12: 判断男声女声相关推荐

  1. tf12: 判断男声女声

    本帖训练一个简单的神经网络模型,用来判断声音是男是女. 本帖数据集取自voice-gender项目,这个项目使用了n种分类模型,并比较了准确率,但是它没有使用神经网络模型,本帖算是一个补充. 数据集 ...

  2. 第十八章 12判断string类型字符串是否为空

    // 12判断string类型字符串是否为空 /*#include <iostream> #include <string> using namespace std; int ...

  3. TensorFlow 1.12.2 发布,修复 GIF 构造安全漏洞

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   TensorFlow 1.12.2 发布了,此处本修复了一个潜在的安全漏洞: 精心设计的 GIF 图像可以在解码过程中产生空指针解引用 更新 ...

  4. Win10 tensorflow 1.12 gpu + CUDA10 + Anaconda3-4.4 python3.6 安装过程

    陆续折腾了几天终于把tensorflow gpu版本装完了.特此记录详细安装过程:(如有什么问题和坑,欢迎交流!^_^) 我装的各版本文件: Cuda 10 Ananconda3-4.4 tensor ...

  5. NVIDA GTX2080 Ubuntu18.04 cuda10.0 cudnn7.5 tensorflow 1.12 install

    NVIDA GTX2080 Ubuntu18.04 cuda10.0 cudnn7.5 tensorflow 1.12 install 心仪已久的显卡2080终于到了,Ubuntu18这么帅,怎么还能 ...

  6. 男声女声分类之SVM

    男声女声分类之svm 目录 男声女声分类之svm svc 数据 模型构建预测 svc 1.支撑向量机SVM是一种非常重要和广泛的机器学习算法,它的算法出发点是尽可能找到最优的决策边界,使得模型的泛化能 ...

  7. 机器学习 实验二 男声女声分类

    机器学习 实验二 男声女声分类 一.实验环境 PC机,Python 二.代码 #%%import pandas as pd from sklearn.preprocessing import Stan ...

  8. TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0

    TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0 接触机器学 ...

  9. 男声变女声 matlab,使用matlab判断男声与女声

    %filename:manwoman.m %different man from woman. %=================================================== ...

最新文章

  1. 阅读笔记:Solving the “false positives” problem in fraud prediction
  2. pid调节软件_非常实用的PID算法和PID控制原理
  3. 药品研发 计算机系统验证,基于验证的药品研发项目申报系统的设计
  4. Sublime Test3 添加一键格式化XML文件插件
  5. (网页)java数组去重总结(转)
  6. EasyUI 添加一行的时候 行号出现负数的解决方案
  7. 设计模式Demo制作bug以及反思集锦
  8. python 读xml_python读取xml文件
  9. 准考证打印系统关闭怎么办_2021国家公务员考试准考证打印系统关闭了怎么办...
  10. 指导老师对计算机论文的评语,指导老师对论文的评语
  11. 2012最新JQuery插件
  12. A Game of Thrones(97)
  13. ios android与wp,在iOS与Android间选择WP
  14. 实现一周之内自动登录的 cookie和session还有localStorage的存储机制
  15. Vulkan简介(2)
  16. 《增长黑客》Sean Ellis epub+mobi+azw3
  17. float取小数点后四位
  18. java中实现工厂日历_Java实现的日历功能完整示例
  19. 炒菜机器人放食材的顺序_炒菜机器人的制作方法
  20. 《第六周RFID作业》物联112118 林家辉

热门文章

  1. 调用script方法_自己撸一个代码生成器输入参数和方法
  2. mysql 查询商品列表 显示tag_javascript - MYSQL——怎么一个sql语句查询出用户和用户商品的列表啊...
  3. 如何基于Kubernetes构建完整的DevOps流水线
  4. SSM-SpringMVC-30:SpringMVC中InitBinder的骇客级优化
  5. 《JAVA与模式》之命令模式
  6. iOS中系统自带正则表达式的应用
  7. Django admin coercing to Unicode: need string or buffer, tuple found
  8. android对话框的使用(下)
  9. 有关Expander组件的研究——Silverlight学习笔记[33]
  10. matlab ia模块,MathWorks发布MATLAB和SimulinkR2020a版本,为工程师和科学家提供更多AI功能...