我已经实现了以下神经网络来解决Python中的XOR问题。我的神经网络由2个神经元的输入层,2个神经元的1个隐藏层和1个神经元的输出层组成。我将Sigmoid函数用作隐藏层的激活函数,并将线性(恒等)函数用作输出层的激活函数:
import numpy as np
def sigmoid(z):
return 1/(1+np.exp(-z))
def s_prime(z):
return np.multiply(sigmoid(z), sigmoid(1.0-z))
def init_weights(layers, epsilon):
weights = []
for i in range(len(layers)-1):
w = np.random.rand(layers[i+1], layers[i]+1)
w = w * 2*epsilon - epsilon
weights.append(np.mat(w))
return weights
def fit(X, Y, w, predict=False, x=None):
w_grad = ([np.mat(np.zeros(np.shape(w[i])))
for i in range(len(w))])
for i in range(len(X)):
x = x if predict else X[0]
y = Y[0,i]
# forward propagate
a = x
a_s = []
for j in range(len(w)):
a = …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现蒙特卡洛树搜索来在Python中玩井字棋。我目前的实现如下:
我有一个 Board 类来处理井字游戏板的更改。棋盘的状态由 2x3x3 numpy 数组表示,其中 2 个 3x3 矩阵中的每一个都是二进制矩阵,分别表示 X 的存在和 O 的存在。
class Board:
'''
class handling state of the board
'''
def __init__(self):
self.state = np.zeros([2,3,3])
self.player = 0 # current player's turn
def copy(self):
'''
make copy of the board
'''
copy = Board()
copy.player = self.player
copy.state = np.copy(self.state)
return copy
def move(self, move):
'''
take move of form [x,y] and play
the move for the current player
'''
if np.any(self.state[:,move[0],move[1]]): return
self.state[self.player][move[0],move[1]] = …Run Code Online (Sandbox Code Playgroud) python algorithm machine-learning montecarlo monte-carlo-tree-search
我正在开发一个Flask服务器,通过Web在一些后端Python功能和Javascript客户端之间进行通信.我正在尝试利用Flask的session变量在与应用程序交互的过程中存储用户特定数据.我删除了下面的大多数应用程序特定代码,但我遇到的核心问题仍然存在.
这是我的(简化)Flask应用程序的代码:
import json
import os
from flask import Flask, jsonify, request, session
app = Flask(__name__)
app.secret_key = 'my_secret_key'
@app.route('/', methods=['GET'])
def run():
session['hello'] = 'world'
return jsonify(session['hello'])
@app.route('/update', methods=['POST'])
def update():
return jsonify(session['hello'])
if __name__ == '__main__':
app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)
利用Postman,我可以向我的服务器发出GET请求并接收预期的输出"world".然后,我可以使用任意正文发出POST请求,并获得相同的预期输出"world"(再次使用Postman).
使用Chrome时,我可以访问我的服务器IP并查看"world"页面上的预期输出.我还可以使用Javascript(在Chrome的控制台中)手动发出GET请求,并获得与预期相同的响应.但是,当尝试使用Javascript向服务器发送POST请求时出现问题; 服务器KeyError: 'hello'在尝试发出此请求时显示.
这是我用来发出POST请求的Javascript:
var url = 'http://my_server_ip/update';
fetch(url, {
method: 'POST',
body: JSON.stringify('arbitrary_string'),
headers: new Headers({
'Content-Type': 'application/json'
})
})
.then(response => response.json())
.then((data) => {
console.log(data);
})
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题?为什么我可以使用Postman进行GET/POST请求,但遇到错误,使用Javascript发出相同的请求?