如何解决python中softmax损失函数计算时的溢出问题?
     def loss(self,X,y,reg):
        loss = 0.0
        dW = np.zeros_like(self.W)

        num_train = X.shape[0]
        num_class = self.W.shape[1]

        one_hot = np.zeros(shape = (num_train,num_class))
        y = y.astype('int64')
        one_hot[np.arange(0,num_train), y] = 1  

        Z = X.dot(self.W)
        Z_max = np.max(Z,axis = 1,keepdims = True) #Z_max = Z.max(1).reshape(num_train,1)
        Z = Z - Z_max  #max(1) get the maxmum of each row
        score_E = np.exp(Z)
        Sum = np.sum(score_E,axis = 1,keepdims = True)#score_E.sum(axis = 1).reshape(num_train,1)  # sum of each row
        A = score_E/Sum   #score of every class of each training_example
        A1 = np.where(A > 0.0000000001, A, 0.0000000001)
        loss += -np.sum(one_hot*np.log(A1))/num_train + 0.5 * reg * np.sum(self.W * self.W)
        dW += -np.dot(X.T, one_hot - A) / num_train + reg * self.W
        return loss,dW   

以上是我用python写的softmax的损失函数部分,但是在运行过程中发现输出里有时仍有这样的情况
图片说明

我只对图片做了零均值化,没有归一化,但是Z = Z - Z_max 溢出就说不通啊,这是怎么回事,有没有大神解释??

2个回答

softmax你算的不对,公式你看下:https://www.cnblogs.com/liuyu124/p/7332476.html
它必然是0~1之间的,不可能溢出

e的x次方,若x较大结果会溢出的,所以一般对所有的x值同时减去x_max,保证结果不溢出。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python如何自定义权重损失函数?

我利用keras的神经网络训练一个模型,被训练的数据是一个很大的二维数组,每一行是一个类别,总共有3种类别。被训练出的模型中包括3种类别(暂且称为A,B,C)。现在B类的预测准确率太高了,而A和C类的预测准确率较低,我想在把B类准确率适当减低的情况下来提高A和C类的预测准确率。请问该怎么操作? 代码如下,我从网上查了一些代码,自己不是特别明白,尝试后,出现了错误。请问该如何修改?下面添加的图片中被划红线圈住的代码是添加上去的,最终运行出错了,请问怎么修改,或者重新帮我写一个权重损失代码代码,跪谢 def custom_loss_4(y_true, y_pred, weights): return K.mean(K.abs(y_true - y_pred) * weights) model = models.Sequential() model.add(layers.Dense(200, activation = "relu", input_shape = (1175, ))) weights = np.random.randn(*X_train.shape) weights_tensor = Input(shape=(3,)) cl4 = partial(custom_loss_4,weights=weights_tensor) model.add(layers.Dropout(0.7)) model.add(layers.Dense(100, activation = "relu")) model.add(layers.Dropout(0.5)) model.add(layers.Dense(3, activation = "softmax")) model.compile(optimizer = "rmsprop", loss = cl4, metrics = ["accuracy"]) model.summary() ![图片说明](https://img-ask.csdn.net/upload/201910/13/1570937131_951272.jpg) ![图片说明](https://img-ask.csdn.net/upload/201910/13/1570936461_762097.png) ![图片说明](https://img-ask.csdn.net/upload/201910/13/1570936605_599703.png) 补充一下:我在前面对数据做过了不平衡调整,定义的函数如下: def calc_class_weight(total_y): my_class_weight = class_weight.compute_class_weight("balanced", np.unique(total_y), total_y) return my_class_weight

多分类语义分割模型的损失函数应该如何选择?

小白一枚,想请教下: 我的多分类语义分割模型,label为单通道图片,其像素值已经统一根据类别进行编号(类别5的像素值为5,类别2的像素值为2)。。我的类别数是6(含背景),模型的输出端的激活函数为softmax,损失函数定义为sparse_categorical_crossentropy,模型训练的时候,却会报维度不兼容的错误: Incompatible shape: [262144] vs [4, 256,256] (而4 * 256 *256 刚好就是262144)...这个到底要用什么损失函数才对呢?? 因为从理论上来说,对于label没有进行one-hot处理的多分类,不是应该使用sparse_categorical_crossentropy做损失函数,而不能使用categorical_crossentropy或binary_crossentropy么?? 一直不太理解这块,求高手指点~~

one-hot独热编码用softmax分类器如何实现

one-hot独热编码用softmax分类器如何实现 !!在函数调用中实现,还是输出直接编码成独热编码直接输出就可以啊,还有我的输入用的是矩阵形式,输出是编码形式,比如是1000000 0100000等,就不能作为矩阵输出,这样输入输出形式不一样可以吗?(输入是矩阵,输出是数组)

深度神经网络训练过程中,损失函数的值没有变化

我做了一个很简单的全连接神经网络,一个输入层:输入一个三维的 参数,3个隐藏层,一个输出层:输出一个5位分类结果(一个one-hot数据,类似[1,0,0,0,0]属于第一类)。 使用的损失函数的交叉熵函数,使用梯度下降法。但是当我输出loss函数的值的时候,发现训练过程中,loss的值一直没有变化。我无论如何调整隐藏层神经元个数,都没有用。 请问出现问题的原因有哪些呢? 我把代码贴出来,大家看看呢,代码中我试验过很多包括隐藏层数目,这里的是5层,1,2,3,4,5,层都试过,都不对: ``` # -*- coding: utf-8 -*- """ Created on Mon Jul 3 23:03:28 2017 @author: sony """ # -*- coding: utf-8 -*- """ Created on Mon Jul 3 22:39:30 2017 @author: sony """ # -*- coding: utf-8 -*- """ Created on Mon Jul 3 22:03:49 2017 @author: sony """ import tensorflow as tf from numpy.random import RandomState batch_size = 8 w1 = tf.Variable(tf.random_normal([3,300],stddev = 1,seed = 1)) w2 = tf.Variable(tf.random_normal([300,300],stddev = 1,seed = 1)) w3 = tf.Variable(tf.random_normal([300,300],stddev = 1,seed = 1)) w4 = tf.Variable(tf.random_normal([300,300],stddev = 1,seed = 1)) w5 = tf.Variable(tf.random_normal([300,300],stddev = 1,seed = 1)) w6 = tf.Variable(tf.random_normal([300,5],stddev = 1,seed = 1)) basis1 = tf.Variable(tf.zeros([1, 300]) + 0.1) basis2 = tf.Variable(tf.zeros([1, 300]) + 0.1) basis3 = tf.Variable(tf.zeros([1, 300]) + 0.1) basis4 = tf.Variable(tf.zeros([1, 300]) + 0.1) basis5 = tf.Variable(tf.zeros([1, 300]) + 0.1) basis6 = tf.Variable(tf.zeros([1, 5]) + 0.1) x = tf.placeholder(tf.float32,shape=(None,3)) y_= tf.placeholder(tf.float32,shape=(None,5)) a = tf.matmul(x,w1)+basis1 a = tf.nn.relu(a) b = tf.matmul(a,w2)+basis2 b = tf.nn.relu(b) c = tf.matmul(b,w3)+basis3 c = tf.nn.relu(c) d = tf.matmul(c,w4)+basis4 d = tf.nn.relu(d) e = tf.matmul(d,w5)+basis5 e = tf.nn.relu(e) y = tf.matmul(e,w6)+basis6 y = tf.nn.softmax(y) cross_entropy = -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0))) train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy) #rdm = RandomState(1) #dataset_size = 128 #X = rdm.rand(dataset_size,2) #Y = [ [int(x1+x2<1)] for (x1,x2) in X] f2 = open("C:/Users/sony/Desktop/points(7).txt") X = [] Y = [] D = f2.read(); rows2 = D.split('\n') for row2 in range(len(rows2)): split_row2 = rows2[row2].split() if split_row2: temp = [] templabel = [] i_label = int(split_row2[0]) for k in range(5):#每一行数据分拆 if k == i_label:#输入标签数据,这里的是表示one hot数据 templabel.append(1) else: templabel.append(0) Y.append(templabel) for i in range(3,6): #if(int(split_row2[i]) - 0 < 1e-3): # split_row2[i] = 1 temp.append(float(split_row2[i])) X.append(temp) with tf.Session() as sess: init_op = tf.global_variables_initializer() sess.run(init_op) #print(w1) #print(w2) dataset_size = len(X) STEPS = 500000 for i in range(STEPS): start = (i*batch_size)%dataset_size end = min(start+batch_size,dataset_size) sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]}) if i %100 == 0: total_cross = sess.run(cross_entropy,feed_dict={x:X,y_:Y}) print("After %d training ,loss is %g"%(i,total_cross)) #print(w1) #print(w2) ```

用tensorflow编写损失函数,不知道写的对不对,请大神指点

论文中损失函数为图片当中的定义![图片说明](https://img-ask.csdn.net/upload/201811/10/1541836071_408192.png) loss=tf.Variable(tf.constant(0.0)) for v in range(50): y = y_[v] y_pre = y_conv[v] for n in range(260): for m in range(260): loss = loss + tf.log(1 + tf.exp((y[n]-y[m])*(y_pre[n]-y_pre[m]))) train_step = tf.train.AdamOptimizer(1e-4).minimize(loss) 其中y_是数据集标签,y_conv是tf.softmax的输出(为预测标签的输出),50是每个batch的大小,260是标签的个数。

softmax分类器共有10类,训练数据中没有第1类,测试时怎样正确预测第1类的样本?

我的模型使用了softmax分类器,一共分为10类,但是在我的训练数据中没有第1类的样本,在测试数据中包含了第1类的样本,在测试过程中,第1类样本全都被预测成了其它类,怎样做可以正确的预测这类训练数据中没有的样本?

为什么我在使用机器学习中的softmax来进行学习时预测时预测时间太短而且精确度一直为零

是因为我的输入数据较少吗还是算法有问题 ![图片说明](https://img-ask.csdn.net/upload/201905/03/1556844528_823169.png) ``` import math import pandas as pd import numpy as np import random import time from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score class Softmax(object): def __init__(self): self.learning_step = 0.000001 # 学习速率 self.max_iteration = 100000 # 最大迭代次数 self.weight_lambda = 0.01 # 衰退权重 def cal_e(self,x,l): ''' 计算博客中的公式3 ''' theta_l = self.w[l] product = np.dot(theta_l,x) return math.exp(product) def cal_probability(self,x,j): ''' 计算博客中的公式2 ''' molecule = self.cal_e(x,j) denominator = sum([self.cal_e(x,i) for i in range(self.k)]) return molecule/denominator def cal_partial_derivative(self,x,y,j): ''' 计算博客中的公式1 ''' first = int(y==j) # 计算示性函数 second = self.cal_probability(x,j) # 计算后面那个概率 return -x*(first-second) + self.weight_lambda*self.w[j] def predict_(self, x): result = np.dot(self.w,x) row, column = result.shape # 找最大值所在的列 _positon = np.argmax(result) m, n = divmod(_positon, column) return m def train(self, features, labels): self.k = len(set(labels)) self.w = np.zeros((self.k,len(features[0])+1)) time = 0 while time < self.max_iteration: print('loop %d' % time) time += 1 index = random.randint(0, len(labels) - 1) x = features[index] y = labels[index] x = list(x) x.append(1.0) x = np.array(x) derivatives = [self.cal_partial_derivative(x,y,j) for j in range(self.k)] for j in range(self.k): self.w[j] -= self.learning_step * derivatives[j] def predict(self,features): labels = [] for feature in features: x = list(feature) x.append(1) x = np.matrix(x) x = np.transpose(x) labels.append(self.predict_(x)) return labels if __name__ == '__main__': print('Start read data') time_1 = time.time() raw_data = pd.read_csv('E:\jiqi\jiqiqiq.CSV', header=0) data = raw_data.values imgs = data[0::, 1::] labels = data[::, 0] # 选取 2/3 数据作为训练集, 1/3 数据作为测试集 train_features, test_features, train_labels, test_labels = train_test_split( imgs, labels, test_size=0.33, random_state=23323) # print train_features.shape # print train_features.shape time_2 = time.time() print('read data cost '+ str(time_2 - time_1)+' second') print('Start training') p = Softmax() p.train(train_features, train_labels) time_3 = time.time() print('training cost '+ str(time_3 - time_2)+' second') print('Start predicting') test_predict = p.predict(test_features) time_4 = time.time() print('predicting cost ' + str(time_4 - time_3) +' second') score = accuracy_score(test_labels, test_predict) print("The accruacy socre is " + str(score)) ```

tensorflow训练网络时精度很高,在训练时查看softmax之后的概率值和实际的标签值却对应不上

我想保存网络softmax之后的概率值,我把最后一个epoch中softmax之后的概率值和实际标签的值放在两个不同的大数组里面,训练结束以后查看,发现这两个预测的标签和实际标签基本对应不上,但是网络训练时最后的精度有0.98以上,调试查看,每个step的acc有0.986,但是查看网络输出的概率值和实际标签却基本对应不上,请问这是什么原因呢?![图片说明](https://img-ask.csdn.net/upload/201911/25/1574665421_337058.png)![图片说明](https://img-ask.csdn.net/upload/201911/25/1574665430_165293.png) 如上图所示,batch_y是实际的标签值,logit_output是softmax之后的概率值,此时网络已经训练到了最后一个epoch,已经收敛,调试看到此时的精度为0.96875,但预测值和标签值却几乎对应不上,请问这是什么原因呢?

python测试集结果调取问题

test_acc = sess.run(accr,feed_dict=feeds_test) 这个语句是用来调出测试准确率的,如何才能调出测试期间对每一个样本的预测数值???? x=tf.placeholder("float", [None,784]) #placeholder 占位,不赋给x实际值,784 像素值, None无穷样本 y=tf.placeholder("float", [None,10]) #10个分类目标 W=tf.Variable(tf.zeros([784,10])) b=tf.Variable(tf.zeros([10])) #tf.zeros 初始化 actv= tf.nn.softmax(tf.matmul(x,W)+b) #cost function cost=tf.reduce_mean(-tf.reduce_sum(y*tf.log(actv), reduction_indices=1)) learning_rate=0.01 optm= tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) print ('1') pred=tf.equal(tf.argmax(actv, 1), tf.argmax(y, 1)) #ACCURACY accr=tf.reduce_mean(tf.cast(pred,"float")) #INITIALIZER init=tf.global_variables_initializer() training_epochs = 50 #所有样本迭代次数=50 batch_size = 100 #每次迭代用多少样本 display_step = 5 #展示 sess=tf.Session() sess.run(init) #跑初始化 for epoch in range (training_epochs): avg_cost=0 num_batch=int(mnist.train.num_examples/batch_size) for i in range (num_batch): batch_xs, batch_ys= mnist.train.next_batch(batch_size) #一步一步的往下找 sess.run(optm, feed_dict={x: batch_xs, y: batch_ys}) feeds={x:batch_xs, y: batch_ys} avg_cost += sess.run (cost, feed_dict=feeds)/num_batch #display if epoch % display_step == 0: feeds_train = {x: batch_xs, y: batch_ys} feeds_test = {x: mnist.test.images, y: mnist.test.labels} train_acc = sess.run(accr, feed_dict=feeds_train) #feed_dict 针对place holder占位 test_acc = sess.run(accr,feed_dict=feeds_test) print ("Epoch: %03d/%03d cost: %.9f train_acc: %.3f test_acc: %.3f" % (epoch, training_epochs, avg_cost, train_acc, test_acc))

如何解决Layer type `softmax` is not implemented

第一个问题:我在编译的时候发现`softmax` is not implemented的问题,不知道怎么编写softmax和编写好之后把softmax文件放在哪 第二个问题:如果我把Layer('softmax')删了,编译的时候会显示Mismatch between dataset size and units in output layer.我不知道哪个维数出问题了,大佬可以帮忙解答吗 ``` import numpy as np import urllib.request import pandas as pd from pandas import DataFrame import numpy as np import pandas as pd import xlrd from sklearn import preprocessing def excel_to_matrix(path): table = xlrd.open_workbook(path).sheets()[0] # 获取第一个sheet表 row = table.nrows # 行数 col = table.ncols # 列数 datamatrix = np.zeros((row, col)) for x in range(col): cols = np.matrix(table.col_values(x)) datamatrix[:, x] = cols return datamatrix datafile = u'C:\\Users\\asus\\PycharmProjects\\2\\venv\\Lib\\附件2:数据.xls' datamatrix=excel_to_matrix(datafile) data=pd.DataFrame(datamatrix) y=data[10] data=data.drop(10,1) x=data # print(y.shape) from sklearn import preprocessing x_MinMax=preprocessing.MinMaxScaler() y_MinMax=preprocessing.MinMaxScaler() y.as_matrix(y) y=np.array(y).reshape((len(y),1)) x=np.array(x).reshape((len(x),10)) x=x_MinMax.fit_transform(x) y=y_MinMax.fit_transform(y) x.mean(axis=0) import random from sklearn.cross_validation import train_test_split np.random.seed(2016) x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2) from sknn.mlp import Regressor,Layer #预测模型 fit3=Regressor(layers=[Layer('Tanh',units=45),Layer('Tanh',units=18), Layer('softmax')], learning_rate=0.02, random_state=2016, valid_size=0.25, dropout_rate=0.2, learning_momentum=0.30, batch_size=35, n_iter=10 ) fit3.fit(x_train,y_train) from sklearn.metrics import confusion_matrix predict3_train=fit3.predict(x_train) score3=fit3.score(x_train,y_train) confu3=confusion_matrix(y_train,predict3_train) print(confu3) score_text3=fit3.score(x_test,y_test) print(score_text3) predict3_test=fit3.predict(x_test) confu3_test=confusion_matrix(y_test,predict3_test) print(confu3_test) ```

softmax分类器,分类概率都是nan是怎么回事?

训练结果有测试集和训练集的准确率,但是调取测试集的预测值时,全都是nan,我需要得到测试结果实际应用的。请问怎么解决?拿一个二分类为例 以下是前期搭建框架 import numpy as np import tensorflow as tf x=tf.placeholder("float", [None,115]) y=tf.placeholder("float", [None,2]) W=tf.Variable(tf.zeros([115,2])) b=tf.Variable(tf.zeros([2])) actv= tf.nn.softmax(tf.matmul(x,W)+b) ####网上查到说下面这个loss函数中如果是log(0)的话就会有nan,但那应该连训练结果都没有才对吧?我现在能得到训练结果,但是结果都是nan怎么办? cost=tf.reduce_mean(-tf.reduce_sum(y*tf.log(actv), reduction_indices=1)) learning_rate=0.01 optm= tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) pred=tf.equal(tf.argmax(actv, 1), tf.argmax(y, 1)) accr=tf.reduce_mean(tf.cast(pred,"float")) init=tf.global_variables_initializer() sess=tf.InteractiveSession() sess=tf.Session() sess.run(init) training_lenth=len(G)####(回测长度) training_epochs =50 #训练次数 batch_size = len(G) #每次迭代用多少样本(用全套) ##display_step = 5 #展示 print('Down') 训练重点来了,我需要得到result的实际结果 lenth=2 for epoch in range(training_epochs): avg_cost=0 num_batch=int(len(G)/batch_size) for i in range((lenth-1),lenth): batch_xs=np.array(G[i]) batch_ys=np.array(F[i]) sess.run(optm, feed_dict={x: batch_xs, y: batch_ys}) feeds={x:batch_xs, y: batch_ys} avg_cost += sess.run (cost, feed_dict=feeds)/(num_batch*lenth) feeds_train = {x: batch_xs, y: batch_ys} feeds_test = {x: G[i+1], y: F[i+1]} train_acc = sess.run(accr, feed_dict=feeds_train) #feed_dict 针对place holder占位 test_acc = sess.run(accr,feed_dict=feeds_test) result=sess.run(actv,feed_dict=feeds_test) 但是实际给我的结果中,test_acc和train_acc都是有的,但是具体分类的概率值都是nan。 result=sess.run(actv,feed_dict=feeds_train) print (train_acc)# print(test_acc) train_acc a=sess.run([accr,actv],feed_dict=feeds_test) print(a) 0.930233 0.465116 [0.46511629, array([[ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan]], dtype=float32)] 求大神指教,跪送分

Python Tensorflow中dense问题

tf.layers.dense中units的参数设定依据什么规则?是维数越大越精确吗?刚刚开始学,希望能细讲下谢谢

求解!!toolbox 搭建的SAE 模型中,怎么加入softmax分类器作为输出

toolbox 搭建的SAE 模型中,怎么加入softmax分类器作为输出,是直接把nn.output选为softmax就可以了吗,用MATLAB来搭建SAE是分第一训练层,第二训练层,softmax训练层,在toolbox中不需要是吗?

卷积神经网络训练loss变为nan

卷积神经网络训练,用的是mnist数据集,第一次训练前损失函数还是一个值,训练一次之后就变成nan了,使用的损失函数是ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1)),cem = tf.reduce.mean(ce),应该不会出现真数为零或负的情况,而且训练前loss是存在的,只是训练后变为nan,求各位大牛答疑解惑,感激不尽。![图片说明](https://img-ask.csdn.net/upload/201902/18/1550420090_522553.png)![图片说明](https://img-ask.csdn.net/upload/201902/18/1550420096_230838.png)![图片说明](https://img-ask.csdn.net/upload/201902/18/1550420101_914053.png)

请问如何获取CNN的特征向量,也就是softmax前一层的输出,softmax的输入?

1. 因为我只需要CNN的这个特征向量,但是我找不到从哪里打断点获取,请问哪位大神知道如何在MATLAB中获取这个CNN的特征向量呢?多谢~

用tensorflow做机器翻译时训练代码有问题

``` # -*- coding:UTF-8 -*- import tensorflow as tf src_path = 'D:/Python37/untitled1/train.tags.en-zh.en.deletehtml' trg_path = 'D:/Python37/untitled1/train.tags.en-zh.zh.deletehtml' SRC_TRAIN_DATA = 'D:/Python37/untitled1/train.tags.en-zh.en.deletehtml.segment' # 源语言输入文件 TRG_TRAIN_DATA = 'D:/Python37/untitled1/train.tags.en-zh.zh.deletehtml.segment' # 目标语言输入文件 CHECKPOINT_PATH = './model/seq2seq_ckpt' # checkpoint保存路径 HIDDEN_SIZE = 1024 # LSTM的隐藏层规模 NUM_LAYERS = 2 # 深层循环神经网络中LSTM结构的层数 SRC_VOCAB_SIZE = 10000 # 源语言词汇表大小 TRG_VOCAB_SIZE = 4000 # 目标语言词汇表大小 BATCH_SIZE = 100 # 训练数据batch的大小 NUM_EPOCH = 5 # 使用训练数据的轮数 KEEP_PROB = 0.8 # 节点不被dropout的概率 MAX_GRAD_NORM = 5 # 用于控制梯度膨胀的梯度大小上限 SHARE_EMB_AND_SOFTMAX = True # 在softmax层和词向量层之间共享参数 MAX_LEN = 50 # 限定句子的最大单词数量 SOS_ID = 1 # 目标语言词汇表中<sos>的ID """ function: 数据batching,产生最后输入数据格式 Parameters: file_path-数据路径 Returns: dataset- 每个句子-对应的长度组成的TextLineDataset类的数据集对应的张量 """ def MakeDataset(file_path): dataset = tf.data.TextLineDataset(file_path) # map(function, sequence[, sequence, ...]) -> list # 通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。 # function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的list。 # lambda argument_list: expression # 其中lambda是Python预留的关键字,argument_list和expression由用户自定义 # argument_list参数列表, expression 为函数表达式 # 根据空格将单词编号切分开并放入一个一维向量 dataset = dataset.map(lambda string: tf.string_split([string]).values) # 将字符串形式的单词编号转化为整数 dataset = dataset.map(lambda string: tf.string_to_number(string, tf.int32)) # 统计每个句子的单词数量,并与句子内容一起放入Dataset dataset = dataset.map(lambda x: (x, tf.size(x))) return dataset """ function: 从源语言文件src_path和目标语言文件trg_path中分别读取数据,并进行填充和batching操作 Parameters: src_path-源语言,即被翻译的语言,英语. trg_path-目标语言,翻译之后的语言,汉语. batch_size-batch的大小 Returns: dataset- 每个句子-对应的长度 组成的TextLineDataset类的数据集 """ def MakeSrcTrgDataset(src_path, trg_path, batch_size): # 首先分别读取源语言数据和目标语言数据 src_data = MakeDataset(src_path) trg_data = MakeDataset(trg_path) # 通过zip操作将两个Dataset合并为一个Dataset,现在每个Dataset中每一项数据ds由4个张量组成 # ds[0][0]是源句子 # ds[0][1]是源句子长度 # ds[1][0]是目标句子 # ds[1][1]是目标句子长度 #https://blog.csdn.net/qq_32458499/article/details/78856530这篇博客看一下可以细致了解一下Dataset这个库,以及.map和.zip的用法 dataset = tf.data.Dataset.zip((src_data, trg_data)) # 删除内容为空(只包含<eos>)的句子和长度过长的句子 def FilterLength(src_tuple, trg_tuple): ((src_input, src_len), (trg_label, trg_len)) = (src_tuple, trg_tuple) # tf.logical_and 相当于集合中的and做法,后面两个都为true最终结果才会为true,否则为false # tf.greater Returns the truth value of (x > y),所以以下所说的是句子长度必须得大于一也就是不能为空的句子 # tf.less_equal Returns the truth value of (x <= y),所以所说的是长度要小于最长长度 src_len_ok = tf.logical_and(tf.greater(src_len, 1), tf.less_equal(src_len, MAX_LEN)) trg_len_ok = tf.logical_and(tf.greater(trg_len, 1), tf.less_equal(trg_len, MAX_LEN)) return tf.logical_and(src_len_ok, trg_len_ok) #两个都满足才返回true # filter接收一个函数Func并将该函数作用于dataset的每个元素,根据返回值True或False保留或丢弃该元素,True保留该元素,False丢弃该元素 # 最后得到的就是去掉空句子和过长的句子的数据集 dataset = dataset.filter(FilterLength) # 解码器需要两种格式的目标句子: # 1.解码器的输入(trg_input), 形式如同'<sos> X Y Z' # 2.解码器的目标输出(trg_label), 形式如同'X Y Z <eos>' # 上面从文件中读到的目标句子是'X Y Z <eos>'的形式,我们需要从中生成'<sos> X Y Z'形式并加入到Dataset # 编码器只有输入,没有输出,而解码器有输入也有输出,输入为<sos>+(除去最后一位eos的label列表) # 例如train.en最后都为2,id为2就是eos def MakeTrgInput(src_tuple, trg_tuple): ((src_input, src_len), (trg_label, trg_len)) = (src_tuple, trg_tuple) # tf.concat用法 https://blog.csdn.net/qq_33431368/article/details/79429295 trg_input = tf.concat([[SOS_ID], trg_label[:-1]], axis=0) return ((src_input, src_len), (trg_input, trg_label, trg_len)) dataset = dataset.map(MakeTrgInput) # 随机打乱训练数据 dataset = dataset.shuffle(10000) # 规定填充后的输出的数据维度 padded_shapes = ( (tf.TensorShape([None]), # 源句子是长度未知的向量 tf.TensorShape([])), # 源句子长度是单个数字 (tf.TensorShape([None]), # 目标句子(解码器输入)是长度未知的向量 tf.TensorShape([None]), # 目标句子(解码器目标输出)是长度未知的向量 tf.TensorShape([])) # 目标句子长度(输出)是单个数字 ) # 调用padded_batch方法进行padding 和 batching操作 batched_dataset = dataset.padded_batch(batch_size, padded_shapes) return batched_dataset """ function: seq2seq模型 Parameters: Returns: """ class NMTModel(object): """ function: 模型初始化 Parameters: Returns: """ def __init__(self): # 定义编码器和解码器所使用的LSTM结构 self.enc_cell = tf.nn.rnn_cell.MultiRNNCell( [tf.nn.rnn_cell.LSTMCell(HIDDEN_SIZE) for _ in range(NUM_LAYERS)]) self.dec_cell = tf.nn.rnn_cell.MultiRNNCell( [tf.nn.rnn_cell.LSTMCell(HIDDEN_SIZE) for _ in range(NUM_LAYERS)]) # 为源语言和目标语言分别定义词向量 self.src_embedding = tf.get_variable('src_emb', [SRC_VOCAB_SIZE, HIDDEN_SIZE]) self.trg_embedding = tf.get_variable('trg_emb', [TRG_VOCAB_SIZE, HIDDEN_SIZE]) # 定义softmax层的变量 if SHARE_EMB_AND_SOFTMAX: self.softmax_weight = tf.transpose(self.trg_embedding) else: self.softmax_weight = tf.get_variable('weight', [HIDDEN_SIZE, TRG_VOCAB_SIZE]) self.softmax_bias = tf.get_variable('softmax_loss', [TRG_VOCAB_SIZE]) """ function: 在forward函数中定义模型的前向计算图 Parameters:   MakeSrcTrgDataset函数产生的五种张量如下(全部为张量) src_input: 编码器输入(源数据) src_size : 输入大小 trg_input:解码器输入(目标数据) trg_label:解码器输出(目标数据) trg_size: 输出大小 Returns: """ def forward(self, src_input, src_size, trg_input, trg_label, trg_size): batch_size = tf.shape(src_input)[0] # 将输入和输出单词转为词向量(rnn中输入数据都要转换成词向量) # 相当于input中的每个id对应的embedding中的向量转换 src_emb = tf.nn.embedding_lookup(self.src_embedding, src_input) trg_emb = tf.nn.embedding_lookup(self.trg_embedding, trg_input) # 在词向量上进行dropout src_emb = tf.nn.dropout(src_emb, KEEP_PROB) trg_emb = tf.nn.dropout(trg_emb, KEEP_PROB) # 使用dynamic_rnn构造编码器 # 编码器读取源句子每个位置的词向量,输出最后一步的隐藏状态enc_state # 因为编码器是一个双层LSTM,因此enc_state是一个包含两个LSTMStateTuple类的tuple, # 每个LSTMStateTuple对应编码器中一层的状态 # enc_outputs是顶层LSTM在每一步的输出,它的维度是[batch_size, max_time, HIDDEN_SIZE] # seq2seq模型中不需要用到enc_outputs,而attention模型会用到它 with tf.variable_scope('encoder'): enc_outputs, enc_state = tf.nn.dynamic_rnn(self.enc_cell, src_emb, src_size, dtype=tf.float32) # 使用dynamic_rnn构造解码器 # 解码器读取目标句子每个位置的词向量,输出的dec_outputs为每一步顶层LSTM的输出 # dec_outputs的维度是[batch_size, max_time, HIDDEN_SIZE] # initial_state=enc_state表示用编码器的输出来初始化第一步的隐藏状态 # 编码器最后编码结束最后的状态为解码器初始化的状态 with tf.variable_scope('decoder'): dec_outputs, _ = tf.nn.dynamic_rnn(self.dec_cell, trg_emb, trg_size, initial_state=enc_state) # 计算解码器每一步的log perplexity # 输出重新转换成shape为[,HIDDEN_SIZE] output = tf.reshape(dec_outputs, [-1, HIDDEN_SIZE]) # 计算解码器每一步的softmax概率值 logits = tf.matmul(output, self.softmax_weight) + self.softmax_bias # 交叉熵损失函数,算loss loss = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=tf.reshape(trg_label, [-1]), logits=logits) # 在计算平均损失时,需要将填充位置的权重设置为0,以避免无效位置的预测干扰模型的训练 label_weights = tf.sequence_mask(trg_size, maxlen=tf.shape(trg_label)[1], dtype=tf.float32) label_weights = tf.reshape(label_weights, [-1]) cost = tf.reduce_sum(loss * label_weights) cost_per_token = cost / tf.reduce_sum(label_weights) # 定义反向传播操作 trainable_variables = tf.trainable_variables() # 控制梯度大小,定义优化方法和训练步骤 # 算出每个需要更新的值的梯度,并对其进行控制 grads = tf.gradients(cost / tf.to_float(batch_size), trainable_variables) grads, _ = tf.clip_by_global_norm(grads, MAX_GRAD_NORM) # 利用梯度下降优化算法进行优化.学习率为1.0 optimizer = tf.train.GradientDescentOptimizer(learning_rate=1.0) # 相当于minimize的第二步,正常来讲所得到的list[grads,vars]由compute_gradients得到,返回的是执行对应变量的更新梯度操作的op train_op = optimizer.apply_gradients(zip(grads, trainable_variables)) return cost_per_token, train_op """ function: 使用给定的模型model上训练一个epoch,并返回全局步数,每训练200步便保存一个checkpoint Parameters: session : 会议 cost_op : 计算loss的操作op train_op: 训练的操作op saver:  保存model的类 step:   训练步数 Returns: """ def run_epoch(session, cost_op, train_op, saver, step): # 训练一个epoch # 重复训练步骤直至遍历完Dataset中所有数据 while True: try: # 运行train_op并计算cost_op的结果也就是损失值,训练数据在main()函数中以Dataset方式提供 cost, _ = session.run([cost_op, train_op]) # 步数为10的倍数进行打印 if step % 10 == 0: print('After %d steps, per token cost is %.3f' % (step, cost)) # 每200步保存一个checkpoint if step % 200 == 0: saver.save(session, CHECKPOINT_PATH, global_step=step) step += 1 except tf.errors.OutOfRangeError: break return step """ function: 主函数 Parameters: Returns: """ def main(): # 定义初始化函数 initializer = tf.random_uniform_initializer(-0.05, 0.05) # 定义训练用的循环神经网络模型 with tf.variable_scope('nmt_model', reuse=None, initializer=initializer): train_model = NMTModel() # 定义输入数据 data = MakeSrcTrgDataset(SRC_TRAIN_DATA, TRG_TRAIN_DATA, BATCH_SIZE) iterator = data.make_initializable_iterator() (src, src_size), (trg_input, trg_label, trg_size) = iterator.get_next() # 定义前向计算图,输入数据以张量形式提供给forward函数 cost_op, train_op = train_model.forward(src, src_size, trg_input, trg_label, trg_size) # 训练模型 # 保存模型 saver = tf.train.Saver() step = 0 with tf.Session() as sess: # 初始化全部变量 tf.global_variables_initializer().run() # 进行NUM_EPOCH轮数 for i in range(NUM_EPOCH): print('In iteration: %d' % (i + 1)) sess.run(iterator.initializer) step = run_epoch(sess, cost_op, train_op, saver, step) if __name__ == '__main__': main() ``` 问题如下,不知道怎么解决,谢谢! Traceback (most recent call last): File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1334, in _do_call return fn(*args) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1319, in _run_fn options, feed_dict, fetch_list, target_list, run_metadata) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1407, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.InvalidArgumentError: StringToNumberOp could not correctly convert string: This [[{{node StringToNumber}}]] [[{{node IteratorGetNext}}]] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:/Python37/untitled1/train_model.py", line 277, in <module> main() File "D:/Python37/untitled1/train_model.py", line 273, in main step = run_epoch(sess, cost_op, train_op, saver, step) File "D:/Python37/untitled1/train_model.py", line 231, in run_epoch cost, _ = session.run([cost_op, train_op]) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 929, in run run_metadata_ptr) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1152, in _run feed_dict_tensor, options, run_metadata) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1328, in _do_run run_metadata) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1348, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.InvalidArgumentError: StringToNumberOp could not correctly convert string: This [[{{node StringToNumber}}]] [[node IteratorGetNext (defined at D:/Python37/untitled1/train_model.py:259) ]]

怎样用Q_learning在回测中更新softmax分类器的系数?

我分析的目标分类随时间的变化各参数的系数会产生变化,比如,用softmax对孩子的健康水平进行分类。随时间的变化,同龄孩子的体重会逐渐偏高,需要用强化学习把体重情况和孩子的健康情况的系数进行更新。 目前,我是随着时间的变化每次测试中重建机器学习框架,重新生成一套系数,但是这样系数变化会比较大,我需要利用强化学习把这个系数变化做得更平滑一些,求大神指教(请根据以下代码进行添加和修改,我看了很多强化学习的案例,还是不知道怎么应用在这里)。 w=[] u=[] for lenth in range (5,training_lenth-1): x=tf.placeholder("float", [None,25]) y=tf.placeholder("float", [None,2]) W=tf.Variable(tf.zeros([25,2])) b=tf.Variable(tf.zeros([2])) actv= tf.nn.softmax(tf.matmul(x,W)+b) cost=tf.reduce_mean(-tf.reduce_sum(y*tf.log(actv), reduction_indices=1)) learning_rate=0.01 optm= tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) pred=tf.equal(tf.argmax(actv, 1), tf.argmax(y, 1)) accr=tf.reduce_mean(tf.cast(pred,"float")) init=tf.global_variables_initializer() sess=tf.InteractiveSession() sess=tf.Session() sess.run(init) training_lenth=len(G)####(回测长度) training_epochs =500 #训练次数 batch_size = len(G) #每 for epoch in range(training_epochs): avg_cost=0 num_batch=int(len(G)/batch_size) for i in range((lenth-4),lenth): batch_xs=np.array(G[i]) batch_ys=np.array(F[i]) sess.run(optm, feed_dict={x: batch_xs, y: batch_ys}) feeds={x:batch_xs, y: batch_ys} avg_cost += sess.run (cost, feed_dict=feeds)/(num_batch*lenth) feeds_train = {x: batch_xs, y: batch_ys} feeds_test = {x: G[i+1], y: F[i+1]} train_acc = sess.run(accr, feed_dict=feeds_train) #feed_dict 针对place holder占位 test_acc = sess.run(accr,feed_dict=feeds_test) w.append(test_acc) u.append(train_acc) result=sess.run(actv,feed_dict=feeds_test) print(result) print ("lenth: %03d/%03d cost: %.9f train_acc: %.3f test_acc: %.3f" % (lenth, training_epochs, avg_cost, train_acc, test_acc))#打印方法

pytoch交叉熵函数 IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)

在使用pytoch交叉熵函数时遇到这样的问题 ``` loss = loss_func(output, b_y) ``` 报错信息 ``` Traceback (most recent call last): File "e:\testcode\cnn.py", line 122, in <module> loss = loss_func(output, b_y) # cross entropy loss File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__ result = self.forward(*input, **kwargs) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\nn\modules\loss.py", line 916, in forward ignore_index=self.ignore_index, reduction=self.reduction) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\nn\functional.py", line 2021, in cross_entropy return nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\nn\functional.py", line 1317, in log_softmax ret = input.log_softmax(dim) IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1) ``` print(output)的值 ``` tensor([ 1.1870, 0.5772, -0.1288, -0.5445], grad_fn=<SelectBackward>) ``` print(b_y) ``` tensor([2]) ``` 求教各位能帮忙看看吗

python keras sequential输入

python keras sequential 以Convolution1D作为第一层,输入的数据应该以怎样的形式? ![图片说明](https://img-ask.csdn.net/upload/201611/13/1479043537_386017.png) ![图片说明](https://img-ask.csdn.net/upload/201611/13/1479043555_758273.png) 刚开始接触,求老师能指点一下。

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Linux 会成为主流桌面操作系统吗?

整理 |屠敏出品 | CSDN(ID:CSDNnews)2020 年 1 月 14 日,微软正式停止了 Windows 7 系统的扩展支持,这意味着服役十年的 Windows 7,属于...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

学习总结之HTML5剑指前端(建议收藏,图文并茂)

前言学习《HTML5与CSS3权威指南》这本书很不错,学完之后我颇有感触,觉得web的世界开明了许多。这本书是需要有一定基础的web前端开发工程师。这本书主要学习HTML5和css3,看...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

冒泡排序动画(基于python pygame实现)

本项目效果初始截图如下 动画见本人b站投稿:https://www.bilibili.com/video/av95491382 本项目对应github地址:https://github.com/BigShuang python版本:3.6,pygame版本:1.9.3。(python版本一致应该就没什么问题) 样例gif如下 ======================= 大爽歌作,mad

Redis核心原理与应用实践

Redis核心原理与应用实践 在很多场景下都会使用Redis,但是到了深层次的时候就了解的不是那么深刻,以至于在面试的时候经常会遇到卡壳的现象,学习知识要做到系统和深入,不要把Redis想象的过于复杂,和Mysql一样,是个读取数据的软件。 有一个理解是Redis是key value缓存服务器,更多的优点在于对value的操作更加丰富。 安装 yum install redis #yum安装 b...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

立即提问
相关内容推荐