在网上找到一个DQN的神经网络代码。可以运行,但是没有读取模型的部分 40C

代码可以运行,但是没用读取模型的代码,我在网上找了一段时间,还是没有找到教程。自己写的读写代码不能正常工作
这是原代码

import pygame
import random
from pygame.locals import *
import numpy as np
from collections import deque
import tensorflow as tf  
import cv2               

BLACK     = (0  ,0  ,0  )
WHITE     = (255,255,255)

SCREEN_SIZE = [320,400]
BAR_SIZE = [50, 5]
BALL_SIZE = [15, 15]

# 神经网络的输出
MOVE_STAY = [1, 0, 0,0]
MOVE_LEFT = [0, 1, 0,0]
MOVE_RIGHT = [0, 0, 1,0]
MOVE_RIGHT1=[0,0,0,1]

class Game(object):
    def __init__(self):
        pygame.init()
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(SCREEN_SIZE)
        pygame.display.set_caption('Simple Game')

        self.ball_pos_x = SCREEN_SIZE[0]//2 - BALL_SIZE[0]/2
        self.ball_pos_y = SCREEN_SIZE[1]//2 - BALL_SIZE[1]/2

        self.ball_dir_x = -1 # -1 = left 1 = right  
        self.ball_dir_y = -1 # -1 = up   1 = down
        self.ball_pos = pygame.Rect(self.ball_pos_x, self.ball_pos_y, BALL_SIZE[0], BALL_SIZE[1])

        self.bar_pos_x = SCREEN_SIZE[0]//2-BAR_SIZE[0]//2
        self.bar_pos = pygame.Rect(self.bar_pos_x, SCREEN_SIZE[1]-BAR_SIZE[1], BAR_SIZE[0], BAR_SIZE[1])

    # action是MOVE_STAY、MOVE_LEFT、MOVE_RIGHT
    # ai控制棒子左右移动;返回游戏界面像素数和对应的奖励。(像素->奖励->强化棒子往奖励高的方向移动)
    def step(self, action):

        if action == MOVE_LEFT:
            self.bar_pos_x = self.bar_pos_x - 2
        elif action == MOVE_RIGHT:
            self.bar_pos_x = self.bar_pos_x + 2
        elif action == MOVE_RIGHT1:
            self.bar_pos_x = self.bar_pos_x + 1
        else:
            pass
        if self.bar_pos_x < 0:
            self.bar_pos_x = 0
        if self.bar_pos_x > SCREEN_SIZE[0] - BAR_SIZE[0]:
            self.bar_pos_x = SCREEN_SIZE[0] - BAR_SIZE[0]

        self.screen.fill(BLACK)
        self.bar_pos.left = self.bar_pos_x
        pygame.draw.rect(self.screen, WHITE, self.bar_pos)

        self.ball_pos.left += self.ball_dir_x * 2
        self.ball_pos.bottom += self.ball_dir_y * 3
        pygame.draw.rect(self.screen, WHITE, self.ball_pos)

        if self.ball_pos.top <= 0 or self.ball_pos.bottom >= (SCREEN_SIZE[1] - BAR_SIZE[1]+1):
            self.ball_dir_y = self.ball_dir_y * -1
        if self.ball_pos.left <= 0 or self.ball_pos.right >= (SCREEN_SIZE[0]):
            self.ball_dir_x = self.ball_dir_x * -1

        reward = 0
        if self.bar_pos.top <= self.ball_pos.bottom and (self.bar_pos.left < self.ball_pos.right and self.bar_pos.right > self.ball_pos.left):
            reward = 1    # 击中奖励
        elif self.bar_pos.top <= self.ball_pos.bottom and (self.bar_pos.left > self.ball_pos.right or self.bar_pos.right < self.ball_pos.left):
            reward = -1   # 没击中惩罚

        # 获得游戏界面像素
        screen_image = pygame.surfarray.array3d(pygame.display.get_surface())
        #np.save(r'C:\Users\Administrator\Desktop\game\model\112454.npy',screen_image)
        pygame.display.update()
        # 返回游戏界面像素和对应的奖励
        return reward, screen_image

# learning_rate
LEARNING_RATE = 0.99
# 更新梯度
INITIAL_EPSILON = 1.0
FINAL_EPSILON = 0.05
# 测试观测次数
EXPLORE = 500000 
OBSERVE = 50000
# 存储过往经验大小
REPLAY_MEMORY = 500000

BATCH = 100

output = 4  # 输出层神经元数。代表3种操作-MOVE_STAY:[1, 0, 0]  MOVE_LEFT:[0, 1, 0]  MOVE_RIGHT:[0, 0, 1]
input_image = tf.placeholder("float", [None, 80, 100, 4])  # 游戏像素
action = tf.placeholder("float", [None, output])     # 操作

# 定义CNN-卷积神经网络 参考:http://blog.topspeedsnail.com/archives/10451
def convolutional_neural_network(input_image):
    weights = {'w_conv1':tf.Variable(tf.zeros([8, 8, 4, 32])),
               'w_conv2':tf.Variable(tf.zeros([4, 4, 32, 64])),
               'w_conv3':tf.Variable(tf.zeros([3, 3, 64, 64])),
               'w_fc4':tf.Variable(tf.zeros([3456, 784])),
               'w_out':tf.Variable(tf.zeros([784, output]))}

    biases = {'b_conv1':tf.Variable(tf.zeros([32])),
              'b_conv2':tf.Variable(tf.zeros([64])),
              'b_conv3':tf.Variable(tf.zeros([64])),
              'b_fc4':tf.Variable(tf.zeros([784])),
              'b_out':tf.Variable(tf.zeros([output]))}

    conv1 = tf.nn.relu(tf.nn.conv2d(input_image, weights['w_conv1'], strides = [1, 4, 4, 1], padding = "VALID") + biases['b_conv1'])
    conv2 = tf.nn.relu(tf.nn.conv2d(conv1, weights['w_conv2'], strides = [1, 2, 2, 1], padding = "VALID") + biases['b_conv2'])
    conv3 = tf.nn.relu(tf.nn.conv2d(conv2, weights['w_conv3'], strides = [1, 1, 1, 1], padding = "VALID") + biases['b_conv3'])
    conv3_flat = tf.reshape(conv3, [-1, 3456])
    fc4 = tf.nn.relu(tf.matmul(conv3_flat, weights['w_fc4']) + biases['b_fc4'])

    output_layer = tf.matmul(fc4, weights['w_out']) + biases['b_out']
    return output_layer

# 深度强化学习入门: https://www.nervanasys.com/demystifying-deep-reinforcement-learning/
# 训练神经网络
def train_neural_network(input_image):
    predict_action = convolutional_neural_network(input_image)

    argmax = tf.placeholder("float", [None, output])
    gt = tf.placeholder("float", [None])

    action = tf.reduce_sum(tf.multiply(predict_action, argmax), reduction_indices = 1)
    cost = tf.reduce_mean(tf.square(action - gt))
    optimizer = tf.train.AdamOptimizer(1e-6).minimize(cost)

    game = Game()
    D = deque()

    _, image = game.step(MOVE_STAY)
    # 转换为灰度值
    image = cv2.cvtColor(cv2.resize(image, (100, 80)), cv2.COLOR_BGR2GRAY)
    # 转换为二值
    ret, image = cv2.threshold(image, 1, 255, cv2.THRESH_BINARY)
    input_image_data = np.stack((image, image, image, image), axis = 2)

    with tf.Session() as sess:
        sess.run(tf.initialize_all_variables())

        saver = tf.train.Saver()

        n = 0
        epsilon = INITIAL_EPSILON
        while True:
            action_t = predict_action.eval(feed_dict = {input_image : [input_image_data]})[0]

            argmax_t = np.zeros([output], dtype=np.int)
            if(random.random() <= INITIAL_EPSILON):
                maxIndex = random.randrange(output)
            else:
                maxIndex = np.argmax(action_t)
            argmax_t[maxIndex] = 1
            if epsilon > FINAL_EPSILON:
                epsilon -= (INITIAL_EPSILON - FINAL_EPSILON) / EXPLORE

            for event in pygame.event.get():  #macOS需要事件循环,否则白屏
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
            reward, image = game.step(list(argmax_t))

            image = cv2.cvtColor(cv2.resize(image, (100, 80)), cv2.COLOR_BGR2GRAY)
            ret, image = cv2.threshold(image, 1, 255, cv2.THRESH_BINARY)
            image = np.reshape(image, (80, 100, 1))
            input_image_data1 = np.append(image, input_image_data[:, :, 0:3], axis = 2)

            D.append((input_image_data, argmax_t, reward, input_image_data1))

            if len(D) > REPLAY_MEMORY:
                D.popleft()

            if n > OBSERVE:
                minibatch = random.sample(D, BATCH)
                input_image_data_batch = [d[0] for d in minibatch]
                argmax_batch = [d[1] for d in minibatch]
                reward_batch = [d[2] for d in minibatch]
                input_image_data1_batch = [d[3] for d in minibatch]

                gt_batch = []

                out_batch = predict_action.eval(feed_dict = {input_image : input_image_data1_batch})

                for i in range(0, len(minibatch)):
                    gt_batch.append(reward_batch[i] + LEARNING_RATE * np.max(out_batch[i]))

                optimizer.run(feed_dict = {gt : gt_batch, argmax : argmax_batch, input_image : input_image_data_batch})

            input_image_data = input_image_data1
            n = n+1

            if n % 100 == 0:
                saver.save(sess, 'D:/lolAI/model/game', global_step = n)  # 保存模型

            print(n, "epsilon:", epsilon, " " ,"action:", maxIndex, " " ,"reward:", reward)


train_neural_network(input_image)

这是我根据教程写的读取模型并且运行的代码

import tensorflow as tf

tf.reset_default_graph()
with tf.Session() as sess:
    new_saver = tf.train.import_meta_graph('D:/lolAI/model/game-400.meta')
    new_saver.restore(sess, tf.train.latest_checkpoint('D:/lolAI/model'))
    print(sess.run(tf.initialize_all_variables()))

代码我还没有看的很明白,希望大佬给点意见

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
tensorflow 实现 DQN2013版 计算max(Q(snext))代码问题

![图片说明](https://img-ask.csdn.net/upload/201901/24/1548310303_67636.png) DQN中误差计算是由上式的均方误差来定义的,我的神经网络的输出是Qeval,是Action个q值,但是我在用tensenflow代码实现max(Q(snext)) 时遇到了问题,就是我有两个版本 版本一用one-hot编码动作,然后用动作和Qeval向量相乘的到max(Q(snext)) 版本二没有使用动作,直接用tf.reduce mean(Qeval,axis=1)来直接得到max(Q(snext))。 那么问题来了:(每训练100步,然后再测试十次取平均,使用的gym.cartPole-v0环境)我用版本一,大约第1100回合就可以达到200分。 我用版本二,效果却相差有点大。我想问:这两个版本的计算效果都是一样的,可为什么效果却差很多呢(运行了多次,结果都一样)? ![版本一效果](https://img-ask.csdn.net/upload/201901/24/1548311021_876584.png)![版本2效果](https://img-ask.csdn.net/upload/201901/24/1548311536_442252.png)

神经网络能否不失一般性地解图的最短路径问题?

![(图取自莫烦python) ](https://img-ask.csdn.net/upload/201812/12/1544589119_908681.gif) 解最短路径问题,我看了一些网上的例子,多是训练DQN能够在某一特定图中找到最短路径(如图,在这个特定图中学习如何绕过黑点到达黄点) 这种训练,相当于特定图的拓扑存储在了Q Matrix中,当图(环境)改变时则需要重新训练。 问题:请问神经网络能否不失一般性地解图的最短路径问题?也就是不依赖某种特定的图拓扑,每次输入图拓扑和起点终点,输出最优路径

运用DQN模型,训练五子棋ai,加入五子棋程序后无法学习。

* 我构建了一个DQN网络下五子棋,在进行AI博弈的时候发现AI的自我博弈虽然能使AI获得奖励但是在几千轮循环后网络还是无法做到有效的攻防(有目的的连接棋子,或者打断另一方五子相连)。 * 所以我引入了一个下五子棋的程序(通过评分差值下五子棋实现攻防),但是在引入程序后也不知道是程序太强还是里面的的随机性太大,导致在约7500次左右(训练次数是2w但是我看7500多次都没训练成功我就关掉了)的的训练中程序总能在5到16回合内KO掉DQN网络只也就导致了五子棋AI根本就得不到奖励,无法获得学习。 * 我的奖励是下棋:0分 * 获得胜利:1000分 * 范围超过或者平局-20分 * 请问大佬们,我要怎么做才能使这个网络实现有效的攻防和学习。 * 还有就是我用tensorboard的时候发现我的主网络和记忆库的的权重都未发生更新,请问有懂行的大佬知道吗 * ![图片说明](https://img-ask.csdn.net/upload/201907/26/1564121638_152454.png)

神经网络效果不好,请问是哪里出了问题

我的数据输入全是0.1,0.9组成的矩阵,每一个样本输入有400个节点,隐藏层53个,输出层10个,输出数据也是0.1,0.9,谁最大就是我要的额数据,但是10个数据每次输出的内容都差别不大,怎么回事。求解救。哪位大神如果对Bp神经网络如果熟悉,请告知qq:546961136,谢谢

使用DQN实现推荐系统,如何训练模型?

小白学的比较浅,不太理解在离线环境下,只有离散的数据记录,那么每个state都是无关的,怎么训练能连接s到s'的序列 可能我表达的不是特别清楚,在RL中由一个state到另一个状态是根据反馈r决定的,但是在无法与用户交互的离线环境下,每一条记录的状态s是无关的,那么应该怎么训练?

神经网络cost值不下降的原因

训练一个梯度下降的二分类模型,当神经网络是[n,20,4,1]的cost值是下降收敛的, 但是[n,20,7,5,1]cost值初始为0.69下降到0.64就不会下降了,这是为什么呢? 贴一下代码: ``` import numpy as np import matplotlib.pyplot as plt import h5py #参数初始化,将所有w/b都封装在一个dict中 def initialize_parameters(layer_dims): parameters = {} L = len(layer_dims) for i in range(1,L): parameters['w'+ str(i)] = np.random.randn(layer_dims[i],layer_dims[i-1])*0.01 parameters['b'+ str(i)] = np.zeros((layer_dims[i],1)) assert(parameters['w'+ str(i)]).shape == (layer_dims[i],layer_dims[i-1]) assert(parameters['b'+ str(i)]).shape == (layer_dims[i],1) return parameters #定义激活函数 def relu(Z): A=(Z+abs(Z))/2 assert(A.shape == Z.shape) return A def sigmoid(Z): A=1.0/(1+np.exp(-Z)) assert(A.shape == Z.shape) return A #向前传播 def forward_propagation(X,parameters): #caches存储了每一层计算得到的A,Z值 caches = {} L=len(parameters)//2 A_prev=X for i in range(1,L): Z=np.dot(parameters['w'+str(i)],A_prev)+parameters['b'+str(i)] A=relu(Z) caches['Z'+str(i)]=Z caches['A'+str(i)]=A #这一层计算得到的A需要保留,下一层计算Z要用 A_prev=A #输出层的激活函数时sigmoid Z=np.dot(parameters['w'+str(L)],A_prev)+parameters['b'+str(L)] A=sigmoid(Z) caches['Z'+str(L)]=Z caches['A'+str(L)]=A #这里多存一个X是因为反向传播的时候要用到 caches['A0'] = X return A,caches #计算代价 def cpmpute_cost(A,Y): m=Y.shape[1] cost=-1/m*np.sum(np.multiply(np.log(A),Y)+np.multiply((1-Y),np.log(1-A))) cost=np.squeeze(cost) return cost #relu函数的导数 def relu_back(Z,dA): deri = Z deri[Z < 0]=0 deri[Z >=0]=1 return deri #反向传播 def back_propagation(Y,caches,parameters): #所有的dw和db grads={} L=len(caches)//2 m=Y.shape[1] #AL其实就是一次迭代得到的预测值 AL=caches['A'+str(L)] #因为sigmoid反向传和relu不同,所以单独处理 dZ=AL-Y dW=np.dot(dZ,caches['A'+str(L-1)].T)/m db=np.sum(dZ,axis=1,keepdims=True)/m grads['dw'+str(L)]=dW grads['db'+str(L)]=db for i in reversed(range(1,L)): dA=np.dot(parameters['w'+str(i+1)].T,dZ) dZ=np.multiply(dA,relu_back(caches['Z'+str(i)],dA)) dW=1.0/m * np.dot(dZ,caches['A'+str(i-1)].T) db=1.0/m * np.sum(dZ,axis=1,keepdims=True) grads['dw'+str(i)]=dW grads['db'+str(i)]=db return grads #更新参数 def update_parameters(parameters, grads, alphs): L = len(parameters)//2 for l in range(L): parameters['w'+str(l+1)] = parameters['w'+str(l+1)] - alphs * grads['dw'+str(l+1)] parameters['b'+str(l+1)] = parameters['b'+str(l+1)] - alphs * grads['db'+str(l+1)] return parameters #模型预测 def predict(X,parameters): A2,caches=forward_propagation(X,parameters) temp=A2.shape[1] Y_pred=np.zeros([1,temp]) for i in range(temp): if A2[:,i]>0.5: Y_pred[:,i]=1 else: Y_pred[:,i]=0 return Y_pred #模型整合 def model(X,Y,layer_dims,iter_times,alphs,print_flag): np.random.seed(1) parameters=initialize_parameters(layer_dims) for i in range(0,iter_times): A,caches=forward_propagation(X,parameters) cost=cpmpute_cost(A,Y) grads=back_propagation(Y,caches,parameters) parameters=update_parameters(parameters,grads,alphs) if print_flag and i % 100 == 0: print('iteration at ',i,' cost :',cost) return parameters n=train_data_finalX.shape[0] layer_dims=[n,20,7,5,1] parameters=model(train_data_finalX,train_data_finalY,layer_dims,2500,0.0075,True) y_pred_train=predict(train_data_finalX,parameters) print('train acc is ',np.mean(y_pred_train == train_data_finalY)*100,'%') y_pred_test=predict(test_data_finalX,parameters) print('test acc is ',np.mean(y_pred_test == test_data_finalY)*100,'%') ``` 结果类似这样,后面cost值变化很小,在小数点后5位 我试过增加迭代次数和增大学习因子,还是有这个问题 iteration at 0 cost : 0.6932015486338629 iteration at 100 cost : 0.6482987506672847 iteration at 200 cost : 0.6443527436694975 iteration at 300 cost : 0.6439059082659386 iteration at 400 cost : 0.6436651460852033 iteration at 500 cost : 0.6431109804509275

关于Q-Learning及DQN几种优化方法能否结合的疑问?

本人最近在研究制作游戏ai,从DeepMind提出的DQN获得了制作的思路。 但是同时也看到有多种优化方式来提升训练性能,比如Double DQN, Prioritized Experience DQN & Dueling DQN。 下面就有几点疑问: 1.这几种优化方式能否进行一下结合? 2.较为简单的游戏情况,使用Deep Learning是否比传统Q-Learning有较大提升? 3.针对较为复杂的游戏情况,哪种算法更为有效?

设计一个俄罗斯方块AI

我们老师给的作业设计 哪位大神能帮帮忙 程序已经设计完成,就是AI方面没有死路 有没有开源代码给看看 字符型界面 ![图片说明](https://img-ask.csdn.net/upload/201509/16/1442405880_686843.png)

关于迷宫深度最短路径的问题

#include <iostream> #include <set> #include <string.h> #include <cmath> #include <cstdlib> #define N 100 using namespace std; struct node { double h,g,f; int x,y; bool operator<(node other)const { return f<other.f; } }; int map[N][N];//迷宫,1表示可以走,0表示不可以走 int row,col;//矩阵的行和列 multiset<node> open;//可以拓展节点 multiset<node>::iterator it; node close[N][N];//已经走过的节点 int step[8][2] = {1,0,0,1,-1,0,0,-1,1,1,1,-1,-1,1,-1,-1};//走的方式 int prev[N*N];//存放前一个节点 int Init() { memset(close,0,sizeof(close)); } double getg(node a,node b)//获取当前点到终点的路径值 { return sqrt(1.0*(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } bool Is_Match(node a,node b) { if(a.x == b.x && a.y == b.y) { return true; } return false; } node begin,end; int main() { while(cin>>row>>col) { open.clear(); Init(); for(int i=0;i<row;i++)//输入迷宫 { for(int j=0;j<col;j++) { cin>>map[i][j]; } } cin>>begin.x>>begin.y>>end.x>>end.y;//起始点和终点 begin.g = getg(begin,end);//初始化起始点的估值函数 begin.f = begin.g; begin.h = 0; open.insert(begin);//open表插入起点 bool IsSuccess = false; while(!open.empty())//但还有节点可以走 { node son = *(open.begin());//取出路径消耗+估值函数最小的节点 open.erase(open.begin());//从open表中删除上面的节点 for(int i=0;i<8;i++)//探寻8个方向 { int u = son.x+step[i][0]; int v = son.y+step[i][1]; if(u>=0&&v>=0&&u<row&&v<col&&map[u][v])//如果这个节点在矩阵中,且值为1,可以走 { //更新这个节点的信息,包括路径消耗和估值函数 node tmp; tmp.x = u; tmp.y = v; tmp.g = getg(tmp,end); tmp.h = son.h+1; tmp.f = tmp.h + tmp.g; bool IsInOpen = false;//表示是否在open表中 if(u == end.x&&v == end.y)//如果是终点,就退出循环 { prev[u*7+v] = son.x*7+son.y;//记录前一个节点 IsSuccess = true;//表示成功找到了路径 goto BreakPoint; } for(it = open.begin();it!=open.end();it++) { //如果在open表中,比较tmp这个点与open表中的f的大小,如果前者f小就把tmp插入到open表中 if(Is_Match(*it,tmp)) { IsInOpen = true;//表示在open表中 if((*it).f>tmp.f) { node New = tmp; open.erase(it); open.insert(tmp); prev[tmp.x*7+tmp.y] = son.x*7+son.y;//记录前一个节点 break; } } } bool IsInClose = false;//标记是否在close表中 if(close[tmp.x][tmp.y].f)//如果在close中,表示已经走过,再次比较f的大小,如果前者f小,把这个点插入到open表中,并从close表中删除这个点。 { IsInClose = true;//在close表中 if(tmp.f < close[tmp.x][tmp.y].f) { open.insert(tmp); close[tmp.x][tmp.y].f = 0; close[tmp.x][tmp.y].g = 0; close[tmp.x][tmp.y].h = 0; prev[tmp.x*7+tmp.y] = son.x*7+son.y;//记录前一个节点 } } if(!IsInOpen&&!IsInClose)//如果既不在close表中,也不在open表中,表示没有走过,把这个节点插入open表中。 { open.insert(tmp); prev[tmp.x*7+tmp.y] = son.x*7+son.y;//记录前一个节点 } } } //把从open表中取出点得放到close表中,表示已经走过 close[son.x][son.y].x = son.x; close[son.x][son.y].y = son.y; close[son.x][son.y].g = son.g; close[son.x][son.y].f = son.f; close[son.x][son.y].h = son.h; } BreakPoint:; if(IsSuccess)//如果成功找到了路径,输出路径,我没有去反序输出结果,所以点是倒着的。 { cout<<"The Path Is:"<<endl; int x = end.x*7+end.y; int y = begin.x*7+begin.y; while(x!=y) { cout<<"("<<x/7<<","<<x%7<<") -- > "; x = prev[x]; } cout<<"("<<begin.x<<","<<begin.y<<")"<<endl; cout<<endl; cout<<"Reach Success!"<<endl; } else //不能到达终点 { cout<<"Reach Failed!"<<endl; } } } 这个程序输出的路径是倒着输出的 请问怎么修改才能让它正序输出路径,求帮忙 谢谢

如何提取RNN网络的网络参数?

```Python新手,最近在学习DQN算法与RNN网络结合的DRQN。 python中如何将评估网络中的RNN网络参数传递到目标网络RNN中去? 附上莫凡的全联通网络的参数传递代码: # 替换 target net 的参数 t_params = tf.get_collection('target_net_params') # 提取 target_net 的参数 e_params = tf.get_collection('eval_net_params') # 提取 eval_net 的参数 self.replace_target_op = [tf.assign(t, e) for t, e in zip(t_params, e_params)] # 更新 target_net 参数 self.sess = tf.Session() self.sess.run(tf.global_variables_initializer()) self.cost_his = [] # 记录所有 cost 变化, 用于最后 plot 出来观看 def _build_net(self): # -------------- 创建 eval 神经网络, 及时提升参数 -------------- self.s = tf.placeholder(tf.float32, [None, self.n_features], name='s') # 态势s占位符,6维 self.q_target = tf.placeholder(tf.float32, [None, self.n_actions], name='Q_target') # q_target占位符,9维值函数 with tf.variable_scope('eval_net'): # c_names(collections_names) 是在更新 target_net 参数时会用到 c_names, n_l1, w_initializer, b_initializer = \ ['eval_net_params', tf.GraphKeys.GLOBAL_VARIABLES], 10, \ tf.random_normal_initializer(0., 0.3), tf.constant_initializer(0.1) # 10个神经元,[6,10] # eval_net 的第一层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l1'): w1 = tf.get_variable('w1', [self.n_features, n_l1], initializer=w_initializer, collections=c_names)#[6,10] b1 = tf.get_variable('b1', [1, n_l1], initializer=b_initializer, collections=c_names) l1 = tf.nn.relu(tf.matmul(self.s, w1) + b1) # eval_net 的输出层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l2'): w2 = tf.get_variable('w2', [n_l1, self.n_actions], initializer=w_initializer, collections=c_names)#[10,9] b2 = tf.get_variable('b2', [1, self.n_actions], initializer=b_initializer, collections=c_names) self.q_eval = tf.matmul(l1, w2) + b2 with tf.variable_scope('loss'): # 求误差 self.loss = tf.reduce_mean(tf.squared_difference(self.q_target, self.q_eval)) with tf.variable_scope('train'): # 梯度下降 self._train_op = tf.train.RMSPropOptimizer(self.lr).minimize(self.loss) #self._train_op =tf.train.GradientDescentOptimizer(self.lr).minimize(self.loss) #self._train_op =tf.train.AdamOptimizer(self.lr).minimize(self.loss) # ---------------- 创建 target 神经网络, 提供 target Q --------------------- self.s_ = tf.placeholder(tf.float32, [None, self.n_features], name='s_') # 接收下个 observation (下一个输入) with tf.variable_scope('target_net'): # c_names(collections_names) 是在更新 target_net 参数时会用到 c_names = ['target_net_params', tf.GraphKeys.GLOBAL_VARIABLES] # target_net 的第一层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l1'): w1 = tf.get_variable('w1', [self.n_features, n_l1], initializer=w_initializer, collections=c_names) b1 = tf.get_variable('b1', [1, n_l1], initializer=b_initializer, collections=c_names) l1 = tf.nn.relu(tf.matmul(self.s_, w1) + b1) # target_net 的第二层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l2'): w2 = tf.get_variable('w2', [n_l1, self.n_actions], initializer=w_initializer, collections=c_names) b2 = tf.get_variable('b2', [1, self.n_actions], initializer=b_initializer, collections=c_names) self.q_next = tf.matmul(l1, w2) + b2 请大佬讲解RNN参数传递时也尽可能有代码演示谢谢!!!

机器学习模型的损失函数,是如何进行选取的?

我们训练数据时,需要指定模型的损失函数,并对其进行优化处理,使得模型到达要求。那这个模型的损失函数,一般情况下是如何确定的呢?到底是选用平方损失函数还是绝对损失函数,或是对数损失函数??

Value passed to parameter 'begin' has DataType float32 not in list of allowed values: int32, int64报错 文件在array_ops.py

如题 报错文件在array_ops.py 源码为 ``` def loss_jeq(self, Q_select): jeq = 0.0 for i in range(self.batch_size): ae = self.actiond[i] max_value = float("-inf") for a in range(self.n_actions): max_value = tf.maximum(Q_select[i][a] + self.loss_l(ae, a), max_value) q_value = Q_select[i][ae]#此处报错 jeq += (max_value - q_value) return jeq ``` 报错为 ``` Traceback (most recent call last): File "J:/C51/PYCHARMmm/transfer-learning/2.10/训练好的/VGT-dueling_1098s_zl _xxx_0.1/VGT-dueling_45s_zl _xxx/VGT_DQN_1098_0.1S.py", line 282, in <module> e_greedy_increment=INCREMENT, dueling=True, output_graph=True) File "J:/C51/PYCHARMmm/transfer-learning/2.10/训练好的/VGT-dueling_1098s_zl _xxx_0.1/VGT-dueling_45s_zl _xxx/VGT_DQN_1098_0.1S.py", line 47, in __init__ self._build_net() File "J:/C51/PYCHARMmm/transfer-learning/2.10/训练好的/VGT-dueling_1098s_zl _xxx_0.1/VGT-dueling_45s_zl _xxx/VGT_DQN_1098_0.1S.py", line 127, in _build_net + 1.0 * self.loss_jeq(self.q_eval)\ File "J:/C51/PYCHARMmm/transfer-learning/2.10/训练好的/VGT-dueling_1098s_zl _xxx_0.1/VGT-dueling_45s_zl _xxx/VGT_DQN_1098_0.1S.py", line 78, in loss_jeq q_value = Q_select[i][ae] File "H:\Anaconda3\envs\rl\lib\site-packages\tensorflow\python\ops\array_ops.py", line 525, in _slice_helper name=name) File "H:\Anaconda3\envs\rl\lib\site-packages\tensorflow\python\ops\array_ops.py", line 691, in strided_slice shrink_axis_mask=shrink_axis_mask) File "H:\Anaconda3\envs\rl\lib\site-packages\tensorflow\python\ops\gen_array_ops.py", line 8521, in strided_slice name=name) File "H:\Anaconda3\envs\rl\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 609, in _apply_op_helper param_name=input_name) File "H:\Anaconda3\envs\rl\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 60, in _SatisfiesTypeConstraint ", ".join(dtypes.as_dtype(x).name for x in allowed_list))) TypeError: Value passed to parameter 'begin' has DataType float32 not in list of allowed values: int32, int64 ``` 望各位解答!

求面向对象的含AI重力四子棋

完成控制台下的人机对弈连四游戏。棋盘为6*6大小。可判断输赢,棋盘已满和棋等情况

X错误:在AMPPS上启动Apache时BadDrawable(无效的Pixmap或Window参数)

<div class="post-text" itemprop="text"> <p>After successfull instalation of Ampps on ubuntu 16.4 i encounterd error while starting it. It showing blank screen and terminal started throwing below error.</p> <pre><code>X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x1e00011 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x1e00011 </code></pre> <p>After some research i found below solution.</p> <p>add this line <strong>QT_X11_NO_MITSHM=1</strong> in system env var.</p> <p>In my case environment file location is : etc/environment</p> <p>I think this solution will also work for question <a href="https://stackoverflow.com/questions/37151453/warning-x-error-baddrawable-when-i-run-the-deepmind-dqn-on-gnome-ubuntu-12">Warning x error baddrawable when I run the deepmind DQN on GNOME (ubuntu 12)</a></p> <p>Solution link is from <a href="https://github.com/P0cL4bs/WiFi-Pumpkin/issues/53" rel="nofollow noreferrer">https://github.com/P0cL4bs/WiFi-Pumpkin/issues/53</a></p> </div>

黑白棋ai的前沿点以及稳定子计算方法?

请问各位大牛,黑白棋ai中的前沿子到底是什么,还有稳定子一般有哪些判断方法?

如何强制主题使用Wordpress jQuery?

<div class="post-text" itemprop="text"> <p>I installed a new awesome theme and got it working after hard work. Everything's running fine, except the 'Add Media', 'Add Link' and the 'HTML Editor'.</p> <p>I read how to diagnose the problem according the official diagnosing instructions and posted it on Wordpress.org forum as they told me to, but I got no response yet and I don't think I'll be getting one anyway.</p> <p>I used this:</p> <pre><code>define('SCRIPT_DEBUG', true); </code></pre> <p>And it did solve the problem for 'Add Media' and 'HTML Editor', but not for the 'add link'. When I click it, it DOES open, but the screen goes grey and the box is way far in the bottom-left corner and and I can't close it with the 'Cancel' button (<a href="http://i.imgur.com/SgwisDX.png" rel="nofollow">see here</a>).</p> <p>I did try disabling all the plugins but it doesn't work (<a href="http://i.imgur.com/dQn06Kf.png" rel="nofollow">see here</a>).</p> <p>In summary the problem is that the theme probably has its own version of jQuery and Wordpress 3.5 has its own. How do I force the theme to use Wordpress's jQuery? Or force Wordpress to use the theme's jQuery? Anything that will fix the editor, I want that.</p> <p>EDIT: Just to make it clearer. There is NO conflict with plugins. The conflict is between Wordpress's jQuery and the theme's jQuery.</p> <p>If it helps, this is in the header file.</p> <pre><code> &lt;?php wp_enqueue_style("jqueryui_css", get_stylesheet_directory_uri()."/css/jqueryui/custom.css", false, $pp_theme_version, "all"); wp_enqueue_style("screen_css", get_stylesheet_directory_uri()."/css/screen.css", false, $pp_theme_version, "all"); wp_enqueue_style("tipsy_css", get_stylesheet_directory_uri()."/css/tipsy.css", false, $pp_theme_version, "all"); wp_enqueue_style("fancybox_css", get_stylesheet_directory_uri()."/js/fancybox/jquery.fancybox.css", false, $pp_theme_version, "all"); wp_enqueue_style("flexslider_css", get_stylesheet_directory_uri()."/js/flexslider/flexslider.css", false, $pp_theme_version, "all"); $pp_advance_enable_responsive = get_option('pp_advance_enable_responsive'); if(!empty($pp_advance_enable_responsive)) { wp_enqueue_style("grid_css", get_stylesheet_directory_uri()."/css/grid.css", false, $pp_theme_version, "all"); } if(isset($_SESSION['pp_slider_style'])) { $pp_slider_style = $_SESSION['pp_slider_style']; } else { $pp_slider_style = get_option('pp_slider_style'); } if($pp_slider_style=='full') { wp_enqueue_style("pp_slider_style", get_stylesheet_directory_uri()."/css/fullslide.css", false, $pp_theme_version, "all"); } wp_enqueue_style("colorpicker.css", get_stylesheet_directory_uri()."/js/colorpicker/css/colorpicker.css", false, $pp_theme_version, "all"); ?&gt; &lt;script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"&gt;&lt;/script&gt; &lt;?php wp_enqueue_script("jquery", get_stylesheet_directory_uri()."/js/jquery.js", false, $pp_theme_version); wp_enqueue_script("jQuery_UI_js", get_stylesheet_directory_uri()."/js/jquery-ui.js", false, $pp_theme_version); wp_enqueue_script("swfobject.js", get_stylesheet_directory_uri()."/swfobject/swfobject.js", false, $pp_theme_version); wp_enqueue_script("colorpicker.js", get_stylesheet_directory_uri()."/js/colorpicker.js", false, $pp_theme_version); wp_enqueue_script("eye.js", get_stylesheet_directory_uri()."/js/eye.js", false, $pp_theme_version); wp_enqueue_script("utils.js", get_stylesheet_directory_uri()."/js/utils.js", false, $pp_theme_version); wp_enqueue_script("fancybox_js", get_stylesheet_directory_uri()."/js/fancybox/jquery.fancybox.pack.js", false, $pp_theme_version); wp_enqueue_script("jQuery_easing", get_stylesheet_directory_uri()."/js/jquery.easing.js", false, $pp_theme_version); wp_enqueue_script("jQuery_hint", get_stylesheet_directory_uri()."/js/hint.js", false, $pp_theme_version); wp_enqueue_script("jQuery_validate", get_stylesheet_directory_uri()."/js/jquery.validate.js", false, $pp_theme_version); wp_enqueue_script("jQuery_tipsy", get_stylesheet_directory_uri()."/js/jquery.tipsy.js", false, $pp_theme_version); wp_enqueue_script("reflection_js", get_stylesheet_directory_uri()."/js/reflection.js", false, $pp_theme_version); wp_enqueue_script("browser_js", get_stylesheet_directory_uri()."/js/browser.js", false, $pp_theme_version); wp_enqueue_script("flexslider_js", get_stylesheet_directory_uri()."/js/flexslider/jquery.flexslider-min.js", false, $pp_theme_version); wp_enqueue_script("marquee_js", get_stylesheet_directory_uri()."/js/jquery.marquee.js", false, $pp_theme_version); wp_enqueue_script("jwplayer_js", get_stylesheet_directory_uri()."/js/jwplayer.js", false, $pp_theme_version); wp_enqueue_script("gmap_js", get_stylesheet_directory_uri()."/js/gmap.js", false, $pp_theme_version); wp_enqueue_script("custom_js", get_stylesheet_directory_uri()."/js/custom.js", false, $pp_theme_version); /* Always have wp_head() just before the closing &lt;/head&gt; * tag of your theme, or you will break many plugins, which * generally use this hook to add elements to &lt;head&gt; such * as styles, scripts, and meta tags. */ wp_head(); ?&gt; </code></pre> </div>

Golang:xml解组无法正常工作

<div class="post-text" itemprop="text"> <p>response getting in xml format:</p> <p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"&gt; &lt;id&gt;https://sites.google.com/feeds/activity/site/siteName&lt;/id&gt; &lt;updated&gt;2009-09-10T05:24:23.120Z&lt;/updated&gt; &lt;title&gt;Activity&lt;/title&gt; &lt;link rel="alternate" type="text/html" href="http://sites.google.com/site/siteName/system/app/pages/recentChanges"/&gt; &lt;link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="https://sites.google.com/feeds/activity/site/siteName"/&gt; &lt;link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/activity/site/siteName"/&gt; &lt;generator version="1" uri="http://sites.google.com"&gt;Google Sites&lt;/generator&gt; &lt;openSearch:startIndex&gt;1&lt;/openSearch:startIndex&gt; &lt;entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&amp;quot;CU4GQ3szfSl7ImA9WxNRFUg.&amp;quot;"&gt; &lt;id&gt;https://sites.google.com/feeds/activity/site/siteName/940375996952876062&lt;/id&gt; &lt;updated&gt;2009-09-10T03:38:42.585Z&lt;/updated&gt; &lt;category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/sites/2008#deletion" label="deletion"/&gt; &lt;title&gt;home&lt;/title&gt; &lt;summary type="xhtml"&gt; &lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;User deleted &lt;a href="http://sites.google.com/site/siteName/home"&gt;home&lt;/a&gt; &lt;/div&gt; &lt;/summary&gt; &lt;link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml" href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/&gt; &lt;link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml" href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/&gt; &lt;link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/activity/site/siteName/940375996952876062"/&gt; &lt;author&gt; &lt;name&gt;User&lt;/name&gt; &lt;email&gt;user@gmail.com&lt;/email&gt; &lt;/author&gt; &lt;/entry&gt; &lt;entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&amp;quot;CU8DQn45fyl7ImA9WxNRFUg.&amp;quot;"&gt; &lt;id&gt;https://sites.google.com/feeds/activity/site/siteName/7165439066235480082&lt;/id&gt; &lt;updated&gt;2009-09-10T03:37:53.027Z&lt;/updated&gt; &lt;category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/sites/2008#edit" label="edit"/&gt; &lt;title&gt;home&lt;/title&gt; &lt;summary type="xhtml"&gt; &lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;User2 edited &lt;a href="http://sites.google.com/site/siteName/home"&gt;home&lt;/a&gt; &lt;/div&gt; &lt;/summary&gt; &lt;link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml" href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/&gt; &lt;link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml" href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/&gt; &lt;link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/activity/site/siteName/7165439066235480082"/&gt; &lt;author&gt; &lt;name&gt;User&lt;/name&gt; &lt;email&gt;user@gmail.com&lt;/email&gt; &lt;/author&gt; &lt;/entry&gt; &lt;entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&amp;quot;CU8AR3s4cSl7ImA9WxNRFUg.&amp;quot;"&gt; &lt;id&gt;https://sites.google.com/feeds/activity/site/siteName/127448462987345884&lt;/id&gt; &lt;updated&gt;2009-09-10T03:37:26.539Z&lt;/updated&gt; &lt;category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/sites/2008#creation" label="creation"/&gt; &lt;title&gt;home&lt;/title&gt; &lt;summary type="xhtml"&gt; &lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;User3 created &lt;a href="http://sites.google.com/site/siteName/home"&gt;home&lt;/a&gt; &lt;/div&gt; &lt;/summary&gt; &lt;link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml" href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/&gt; &lt;link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml" href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/&gt; &lt;link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/activity/site/siteName/127448462987345884"/&gt; &lt;author&gt; &lt;name&gt;User3&lt;/name&gt; &lt;email&gt;user3@gmail.com&lt;/email&gt; &lt;/author&gt; &lt;/entry&gt; &lt;/feed&gt;</code></pre> </div> </div> <p>In GO i using following structure and code to decode</p> <p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre class="snippet-code-html lang-html prettyprint-override"><code>type XMLLink struct { XMLName xml.Name `xml:"link"` Rel string `xml:"rel,attr"` Href string `xml:"rel,href"` } type XMLEntry struct { XMLName xml.Name `xml:"entry"` Link []XMLLink `xml:"link,attr"` } type XMLFeed struct { XMLName xml.Name `xml:"feed"` Entry []XMLEntry `xml:"entry,attr"` }</code></pre> </div> </div> <p>here i want to decode only link tag under entry tag. following is the code i using to decode the xml into necessary values</p> <p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre class="snippet-code-html lang-html prettyprint-override"><code>var feed XMLFeed //response got from http request is expected xml here which is already men tioned above bodyBytes, _ := ioutil.ReadAll(response.Body) err := xml.Unmarshal(bodyBytes, &amp;feed) if err != nil { log.Fatalf("Unable to unmarshall", err) } fmt.Println("number of entries:", feed)</code></pre> </div> </div> <p>but here output is only <strong>number of entries: {{<a href="http://www.w3.org/2005/Atom" rel="nofollow noreferrer">http://www.w3.org/2005/Atom</a> feed} []}</strong> dont know what is going wrong here please suggest any changes to make this work fine</p> </div>

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

课程主要面向嵌入式Linux初学者、工程师、学生 主要从一下几方面进行讲解: 1.linux学习路线、基本命令、高级命令 2.shell、vi及vim入门讲解 3.软件安装下载、NFS、Samba、FTP等服务器配置及使用

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

如何在虚拟机VM上使用串口

在系统内核开发中,经常会用到串口调试,利用VMware的Virtual Machine更是为调试系统内核如虎添翼。那么怎么搭建串口调试环境呢?因为最近工作涉及到这方面,利用强大的google搜索和自己

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

C++语言基础视频教程

C++语言基础视频培训课程:本课与主讲者在大学开出的程序设计课程直接对接,准确把握知识点,注重教学视频与实践体系的结合,帮助初学者有效学习。本教程详细介绍C++语言中的封装、数据隐藏、继承、多态的实现等入门知识;主要包括类的声明、对象定义、构造函数和析构函数、运算符重载、继承和派生、多态性实现等。 课程需要有C语言程序设计的基础(可以利用本人开出的《C语言与程序设计》系列课学习)。学习者能够通过实践的方式,学会利用C++语言解决问题,具备进一步学习利用C++开发应用程序的基础。

北京师范大学信息科学与技术学院笔试10复试真题

北京师范大学信息科学与技术学院笔试,可以更好的让你了解北师大该学院的复试内容,获得更好的成绩。

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

Tomcat服务器下载、安装、配置环境变量教程(超详细)

未经我的允许,请不要转载我的文章,在此郑重声明!!! 请先配置安装好Java的环境,若没有安装,请参照我博客上的步骤进行安装! 安装Java环境教程https://blog.csdn.net/qq_40881680/article/details/83585542 Tomcat部署Web项目(一)·内嵌https://blog.csdn.net/qq_40881680/article/d...

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

[已解决]踩过的坑之mysql连接报“Communications link failure”错误

目录 前言 第一种方法: 第二种方法 第三种方法(适用于项目和数据库在同一台服务器) 第四种方法 第五种方法(项目和数据库不在同一台服务器) 总结 前言 先给大家简述一下我的坑吧,(我用的是mysql,至于oracle有没有这样的问题,有心的小伙伴们可以测试一下哈), 在自己做个javaweb测试项目的时候,因为买的是云服务器,所以数据库连接的是用ip地址,用IDE开发好...

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python数据分析师-实战系列

系列课程主要包括Python数据分析必备工具包,数据分析案例实战,核心算法实战与企业级数据分析与建模解决方案实战,建议大家按照系列课程阶段顺序进行学习。所有数据集均为企业收集的真实数据集,整体风格以实战为导向,通俗讲解Python数据分析核心技巧与实战解决方案。

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

DirectX修复工具V4.0增强版

DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复

期末考试评分标准的数学模型

大学期末考试与高中的考试存在很大的不同之处,大学的期末考试成绩是主要分为两个部分:平时成绩和期末考试成绩。平时成绩和期末考试成绩总分一般为一百分,然而平时成绩与期末考试成绩所占的比例不同会导致出现不同

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

c语言项目开发实例

十个c语言案例 (1)贪吃蛇 (2)五子棋游戏 (3)电话薄管理系统 (4)计算器 (5)万年历 (6)电子表 (7)客户端和服务器通信 (8)潜艇大战游戏 (9)鼠标器程序 (10)手机通讯录系统

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问