Hello, everyone. In this talk, I'm going to show you how to design functions that can be correctly graph-converted using two of the most exciting features of the new Therson Flow Relays, 2.0, AutoGraph and TF Function. But first, let me introduce myself. So I'm sorry. So I'm Paolo Galeone. I'm a computer engineer, and I do computer vision and machine learning for a living. And I'm literally obsessed with TensorFlow. I started using TensorFlow as soon as Google released it publicly around November 2015, when I was a research fellow at the University of Bologna at the Computer Visual Laboratory. And I never stopped since then. In fact, I blog about TensorFlow. You can see the others of my blog there. I answer questions on Stack Overflow about TensorFlow almost daily. I write open source software using TensorFlow and I use TensorFlow every day at work. For this reason, Google noticed that this strong passion and awarded me with the title of Google Developer Expert in Machine Learning. So as I mentioned, I have a blog, and I invite you to go read it, mainly because this talk is born from a three-part article I wrote about TF Function and AutoGraph. So after this brief introduction, we are ready to start. So in TensorFlow 2.0, the concept of graph definition and session execution, the core of the descriptive way of programming used in TensorFlow 1, are disappeared or better. They've been hidden in favor of the IG execution. IG execution, as everyone almost should know, is the execution of the computation line-by-line, pure, typical of Python. This new design choice has been made with the goal of lowering the entry barriers, making TensorFlow more Pythonic and easy to use. Of course, the description of the computation using Dataflow graphs, proper of TensorFlow 1, have too many advantages that TensorFlow 2.0 must still have. For instance, graphs have faster execution speed, are easy to replicate and to distribute. Graphs, moreover, are language-agnostic representation. In fact, a graph is not a Python program, but is a description of a computation. Being agnostic to the language, they can be created using Python and then exported and used in any other programming language. Moreover, automatic differentiation comes almost for free when the computation is described using graphs. So to merge the graph advantages proper of TensorFlow 1 and the ease of use of the IG execution, TensorFlow introduced the TF function and autograph. So this is the signature of the function. And TF function allow you to transform a subset of Python syntax into a portable and di-performance graph representation with a simple function decoration. As you can see from the function signature, in fact, TF function is a decorator and uses autograph at default. Autograph let you write a graph code using natural Python-like syntax. And in particular, autograph allow you to use Python control flow statements like the if, as, why, for, and so on inside a TF function-decorated function. And it automatically converts them into the appropriate TensorFlow graph nodes. For instance, if statement Python becomes a TF code, for loop become a TF while, and so on. However, in practice, what happens when a function decorated with TF function is called. So this is a schematic representation of what happens and it is a two-phase execution. In particular, the most important thing to note is when a function decorated with the TF function is invoked, eager execution is disabled in that context. And on the first code, the function is executed and traced. Being eager executed, disabled by default, every TF dot method just define a TF operation that produce a TF tensor object as output, exactly in the same way as TensorFlow one. It's the same exact behavior. At the same time, autograph starts and is used to detect the Python construct that can be converted to the graph equivalent. So a while becomes a TF while, and so on. So once gathered all these pieces of information, we can build the graph. So we have the function trace, autograph representation. And so since we have to replicate the eager execution after every single line, what happens is that every execution, every statement is an execution order force using the TensorFlow one TF control dependency statement. At the end of this process, we have build the graph. Then, based on the function name and on the input parameters, a unique ID is created and it is associated with the graph. Then the graph is placed and cached into a map. So we can just have a map ID equal graph. Any functional code then will reuse the defined graph only if the key matches. Of course, since the TF function is a decorator, it forces us to organize the code using functions. In fact, functions are the new way of executing something into a session. Now that we have a basic understanding of how TF function works, we can start using it to solve a simple problem and see if everything goes as we described it here. So this is a problem. The problem is really easy. It's just a multiplication of two constant metrics followed by the addition of a scatter variable b. Really, really easy. So this is the TensorFlow one solution. In TensorFlow one, we have to first describe the computation as a graph inside a graph scope. By default, there is a default graph always present, but in this case, we explicitly here. Then we create a special node with the only goal of initializing the variables and everyone familiar with TensorFlow one should have seen this line a thousand of times. And then in the end, we create the session object and this is the object that received the description of the computation. The graph and places it upon the core cloud hardware. Then we can finally use the session object to run the computation and getting the result. So this is the standard implementation in TensorFlow one and the TensorFlow two thanks to eager execution. The solution of the problem is becoming really, really easier. In fact, we only have to declare the constants and the variables and the computation is executed there directly without the need to create a session. In order to replicate the same behavior of the session execution, rewrite the code instead of function. Executing the function as, in fact, the same behavior of the previous session to run of the output node. The only peculiarity here is that every TF operation, like TF constant, TF matmool and so on produces a TF tensor object and not a Python native type or an empire array. Therefore, for this reason, as you can see in the last line, we have to extract from the TF tensor the numpy representation by calling the dot numpy method. We can call the function as many times as we want and it works like any other Python function. So right now we have only pure eager function. But what happens if we try to decorate this function and convert it to its graph representation using TF function? So, adding the decorator, pretty straightforward. And of course we might expect that since this function works correctly in eager mode, we can convert it to its graph representation just by adding the decorator. Let's try and let's see what happens. I added the two print statements before the return statement. One, it's a print statement executed only by Python, the first one. And the second one is a TF print statement that is a node in the graph. This will help us to understand what's going on. So, this is the first output we see on the console. When the function is called, the process of graph creation starts. At this stage, only the Python code is executed and the execution is traced in order to collect the required data to build the graph. As you can see, this is the only output we get. The TF print call is not evaluated since it has any other TF method. TensorFlow already knows everything about that particular node and therefore there is no need to trace their execution. Moving forward, we can see the second output. So, we got that exception. TF function, the correct function, tried to create variables on a no-first call. But in eager execution, this function worked correctly. So, what's going on here? The exception, of course, is a little bit misleading since we call it this function only once, but the exception is talking about a no-first call. But of course, TF function in practice called this function more than once while trying to trace its execution to create the graph. But in short, as it is to understand, TF function is complaining about the variable object. As this first exception brings us to our first lesson of this talk. And this is the lesson. So, a TF variable object in eager mode is just a Python object that gets destroyed as soon as it goes out of scope. And that's why the function works correctly in eager mode. But a TF variable in a TF-decorated function is the definition of a node in a persistent graph since eager execution is disabled in that context. So, since the graph is persistent, we can define a variable every time we call a new function. And this brings us to the solution of the problem. The solution is to just think about the graph definition while defining the function. So, we can declare a new variable every time the function is called. We have to take care of this manually. Declaring a variable as a private attribute of the class F and creating it only during the first call, we can correctly define a computational graph that works as we expect. And in short, this brings us to our second lesson. The second lesson is that eager functions are not graph convertible as they are. There is no guarantee that functions that work in eager mode are graph convertible. Always define the function structure to think about the graph that's being built. Okay, so this was the first topic of the analysis of TF function. Now we can move forward and analyze what happens when the input type of a TF function, decorated function changes. This part of the talk is, by far, perhaps the most important part, since TF function should bridge two different completely, should bridge two different completely words. In fact, Python is a dynamically-typed language where a function can accept any input type. While TensorFlow being a C++ library under the hood is a slickly, statically-typed library. And every node in the graph must have a well-defined type and also a well-defined shape. So we are going to define a function to test what's going on when we change the input type. This is the function, is the identity. And as we can see, only one, the function accept a Python variable, x, that can be literally everything. Only two, we have a print function that's executed only once during the function tracing. On the third line, we have the TF print function that is executed every time the graph is evaluated. In the end, since this is the identity, we return the input parameter. Okay, this is the first test. When the input, as we can see, is a TF tensor, we expect that a graph is built for every different TF tensor, the type. And this should happen, of course, only once. And then we have to reuse every time we call the same function with the same type, the same graph created on the first code. On every second code, therefore, we don't expect to see the Python execution line, but only the output of the graph execution. Let's see the output. As you can see, everything, when the input is a TF tensor, work as we expect. And since everything is going smoothly, we can try to deep dive a little bit inside the autograph structure and check if the graph that is being built after the autograph execution and the function tracing is what we think. So in short, we think that we should only contain the TF print statement and the return of the input parameter. Okay, using the TF autograph module, is it possible to see how autograph converts a Python function to its graph representation? The code, of course, is a mess because it's machine generated, but we can notice something unexpected. Maybe I can try to move this line. This is a little bit unexpected. In fact, there is a reference to the Python execution inside the graph translation. So this is strange, and this is not what we expected when we want to just create a graph. We can analyze only this part. Without digging too much into the constructor, we can see that there is the name of the function that is Python executed. Of course, there is print. It's argument, Python execution, comics. Wrap it inside a control dependency or return. The second parameter of the autograph converted call is the owner, and as you can see, is none. This means that there is no package known to autograph or TensorFlow that contains the print function definition. So in short, this line is a statement that gets converted to a TF node operation, and it has the only set effect to force the execution order. In practice, we are just enforcing the execution order of the sequence lines, the sequence statements, after the execution of a TF node node. Okay, we can see now after this short analysis of how a function gets graph converted, what happens when the input is not a TF tensor, but is a Python native type. Okay, the code is similar to the previous one. We just defined an Apple function called printinfo to be sure that everything that you... To be sure that we are feeding the correct data type to the function. Since the function is trivial, we expect, of course, the safe behavior we get before. Okay, as we can see, now we can see what happens when a Python integer is fed as input and something weird is going on. Of course, since the Python execution, as you can see, is displayed not only once as we might expect since this is a single data type integer, but it's executed twice. The graph, therefore, is very recreated at every function invocation, and this is really weird. But, trust me, things are getting even worse because now, on the first execution, we have defined two graphs for the one value and for the two value. But what happens if we feed now the same value but with a different data type, so with a float? As you can see, the graph now is not being recreated at every invocation, but given a float input, we get an integer output. So this is no more the identity function. This is somehow broken. In fact, the written type is wrong, and the graph that is being built for the integers one and the integers two is being reused for the float values one and two. So this was my phase when I discovered this. So I spent some time to figure out what was going on, and I summarized this on the next lesson. This is lesson number three. So TF function does not automatically convert a Python integer to a TF tensor. With the data type expected, so since the integer in Python are 64 bits, we expect a TF int 64, and so on. The graph ID, when the input is not a TF tensor object, is built using the variable value, not the type. This is a design choice of the TF function authors that I don't like that much, since it makes the graph conversion not lateral, and you have to worry about this behavior. Moreover, since this new graph is being recreated for every different Python value, we have the risk of designing terribly slow functions. In fact, we can see a simple performance measurement. G is the entity function here. In the first loop, G is fed with the TF tensor object produced by TF range function execution. The second loop instead invokes G with 1,000 different Python integers. And this means that we are building 1,000 different graphs. Autograph is actually optimized and it works well when the input is a TF tensor object, as you can see from the time measurement here. While it creates a new graph for every different input parameter, while for every different input parameter value, while with huge drop in performance. And this brings us to the first lesson, use TF tensor everywhere. Seriously, this is the mantra to repeat. TF tensor is not the only TensorFlow object that we have to use when we are using TF function. In fact, TF function has this web behavior when using Python update types, but also has other web behaviors when using other Python and native constructs. This brings us to the last part of the presentation. Really brief. So what happens when we just plug inside the TF function that we have in function some Python operator? This function works correctly in your mode. Given the TF tensor x that holds the constant value of one, we expect to get the output A equal B, since A and B are the same pattern object. I guess that everyone here should agree that the final answer should never be reached because if we feed a number, every condition should be satisfied and we should never reach the watt lines. But in practice, what happens and if we execute this function, this is the output. What? Yes. So, keeping this really short, there are several problems in that function. The bigger one that affects TensorFlow from the early raises is that the Python equal operator is not overloaded as a TF equal. Then the second huge problem is that Autograph handles the conversion of the if, if, and statement, but not the conversion of the Boolean expressions defined using the Python built-in operations. So in short, the correct way of writing the function is to use the TensorFlow Boolean operators everywhere instead of using the Python native operators. And this brings us to the last lesson, the operator lesson. That's this one. Use the TensorFlow operators operations everywhere seriously. Otherwise, you get that weird behaviors, completely nonsense and really hard to debug. So we are reaching the end. And this is a recap of the five points. So the variable needs a special treatment. You have to think about the graph while designing the function. Eager to graph, the conversion from Eager to graph is not so straightforward. There is no out-of-boxing of Python native types to TF tensor. So we have to use TF tensor everywhere and also we have to use the TensorFlow operator explicitly everywhere. So this is the end. Just I hope you enjoyed the talk. And I just want to share with you the fact that I'm writing a book about TensorFlow TF function and the neural networks. If you want to stay in touch and get informed when the book is out or when a new article about TensorFlow ecosystem is out, just leave your email in the subscribe page. Thank you. We have all our time this evening to ask you questions because it's the last talk in this room. If no one minds, I would start with one question. So first, please put your slides after the talk. I really want to reproduce the examples you gave us because this is what I like about TensorFlow.  That's what's my first thought. And the second, what do you think? The developers of TensorFlow, did they do this on purpose? Like not how you said, like all this about less, greater and equal operators? Did they do this on purpose to not replace them with TF much greater and so on? So I'm 100% sure that TF equal and the underscore underscore equal Python operator has not been overloaded because internally in the TensorFlow code base, they use TF tensor as an index in the map. So they have to be hashable. And therefore, they can't use the TF dot equal because TF dot equal generates a new TF operation and therefore is not something hashable. And this is the reason for TF equal. The other replacement, so for the greater, lesser, and so on, they should be converted. And perhaps they will be converted because in the RFC, they said that, of course, in the future, we will handle this comparison. But since this is the problem of the equal operator, perhaps they can't do this. And they force us to use the TF Boolean operators for this reason. Thank you. If you have any questions, please come to the mic because they are not detachable. So we still have a bit of time for one or two questions. Okay, then, thank you very much for the talk and thanks everyone for being here.


Hello and welcome to the session. In this session we discussed the following question which says define an isosceles trapezium also draw an isosceles trapezium are the diagonals of an isosceles trapezium always equal. Before we move on to the solution first let's define what is a trapezium. Trapezium is a quadrilateral having one and only one of parallel sites. This is the key idea that we use for this question. Now we move on to the solution. So let's define isosceles trapezium a trapezium said to be an isosceles trapezium if its non-parallel sites are equal. Consider this trapezium PQRS it is an isosceles trapezium in which we have PQ parallel to RS and the non-parallel sites that is PS and RQ are equal. That is we have PS is equal to RQ. The diagonals of an isosceles trapezium always equal. For this isosceles trapezium PQRS we have its diagonals PR and SQ and they are equal that is PR is equal to SQ. So this completes our session. Hope you have understood the solution of this question.


Mr. Rankin, Hannah, it's ready for your auditioning. Actually, we'll be auditioning as a jewel.  Well, then, you certainly had a lot of jobs here. Well, I'm a bit of a spark plug and, well, DCU-TV lady, I... No, my name is Han. Well, Han, erm... No, no, sorry, my name is Han. Are you saying Han or Ham? Han. I'm sorry, but who's this gentleman sitting here behind you? Hello, Ms. DCU-TV lady. My name is Carl, I'm Dylan's co-host and I actually believe I can help with this Ham, Han situation. So it's... Ham. Ham. Ham. So... It's H-A-M-D? There's no D, it's Han. It's H-A-N. I don't... But who, what? No, it's like home except with a B at the end. Oh, two Ns. Two Ns. Like Han. Ham. Like Han, Hannah. But Han... No, no, no, Han. First of all, I need someone here to work.  I think we've had enough.  What did you just say?   Sorry, you two are the ones who wore shirts and dressed up for an interview here in college? What? This is the studio. Why are you dressed up like that?  No. Guys, just get out of my studio.


has arrived. Let's give him a warm welcome. The United States of America. The Honorable George Shutz, Secretary of the State Department of the United States of America. The Honorable Arthur Hummel, the United States Ambassador to the United States of America. Ambassador to China. It is an honor for Fudan University to have Mr. President visiting us today during his brief stay in Shanghai. We feel especially honored that Mr. President is going to deliver an address to the students and faculty members of Fudan University. I'm sure that the message conveyed through Mr. President's speech will be of great value and worth to all of us. Now let us greet Mr. President's speech with a warm applause. Thank you very much. We've been in your country only five days, but already we've seen the wonders of a lifetime. The Great Wall of China, a structure so huge and marvelous that it can be seen from space. The ancient city of Xi'an and the tomb of the great emperor and the buried army that guards him still. These are the wonders of ages past. But today I want to talk to you, the young people of a great university, about the future. About our future together and how we can transform human life on this planet if we bring as much wisdom and curiosity to each other as we bring to our scholarly pursuits. I want to begin though with some greetings. I bring you greetings not only from my countrymen, but from one of your countrymen. Some of you know Ye Yong, who was a student here. He graduated from Fudan and became a teacher of English at this university. Now he is at Harvard University in the United States where he is studying for a doctorate in comparative literature. My staff spoke to him before he left. Mr. Ye wants you to know he's doing fine. He's working hard on his spring term papers and his thoughts turn to you often. He asked me to deliver a message to his former students, colleagues, friends, and family. He asked me to say for him, and I hope I can, Wo Xiang Nian Da Jia. He wants you to know that he looks forward to returning to Fudan to teach and President Xie.  You will be proud to know that he received straight A's last term and when we congratulated him he said, I have nothing to be proud of myself. I am so proud of my university. I'd like to say a few words about our China-U.S. educational exchange programs. It's not entirely new. This exchanging of students. Your President, Ye, earned a degree from Smith College in the United States. Smith is also my wife, Nancy's alma mater. And President Ye also attended MIT, Massachusetts Institute of Technology, one of our greatest universities of science, engineering, and technology. But in the past few years, our two countries have enjoyed an explosion in the number of student exchanges. Five years ago, you numbered your students studying abroad in the hundreds. Since then, 20,000 Chinese scholars have studied throughout the world and more than half of them have come to American schools. More than 100 American colleges and universities now have educational exchanges with nearly as many Chinese institutions. We have committed more resources to our Fulbright program in China than in any other country. Two of the American professors teaching here at Fudan are Fulbright professors. And there are 20 American students studying with you, and we're very proud of them. American students come to China to learn many things. How you monitor and predict earthquakes. How you've made such strides in researching the cause and treatment of cancer. We have much to learn from you in neurosurgery and in your use of herbs and medicine. And we welcome the chance to study your language, your history, and your society. You in turn have shown that you're eager to learn to come to American schools and study electronics and computer sciences, math and engineering, physics, management, and the humanities. We have much to share in these fields. And we're eager to benefit from your curiosity. Much of this sharing is recent. Only five years old. But the areas of our mutual cooperation continue to expand. We've already agreed to cooperate more closely in trade, technology, investment, and exchanges of scientific and managerial expertise. And we have just concluded an important agreement to help advance our technological and economic development through the peaceful use of nuclear energy. That term, peaceful use of nuclear energy is key. Our agreement rests upon important principles of nonproliferation. Neither of our countries will encourage nuclear proliferation nor assist any other country to acquire or develop any nuclear explosive device. We live in a troubled world. And the United States and China as two great nations share a special responsibility to help reduce the risk of war. We both agree that there can be only one sane policy to preserve our precious civilization in this modern age. A nuclear war cannot be won and must never be fought. And no matter how great the obstacles may seem, we must never stop our efforts to reduce the weapons of war. We must never stop at all until we see the day when nuclear arms have been banished from the face of this earth. With peaceful cooperation as our guide, the possibilities for future progress are great. For example, we look forward to exploring with China the possibilities of cooperating in the development of space on behalf of our fellow citizens. Our astronauts have found that by working in the zero-gravity environment of space, we will be able to manufacture life-saving medicines with far greater purity and efficiency, medicines that will treat diseases of heart attack and stroke that afflict millions of us. We will learn how to manufacture factor 8, a rare and expensive medicine used to treat hemophiliacs. We can research the beta cell, which produces insulin and which could provide mankind's first permanent cure for diabetes. New satellites can be launched for use in navigation, weather forecasting, broadcasting and computer technology. We already have the technology to make the extraordinary commonplace. We hope to see the day when a Chinese scientist working out an engineering problem in Fudan will be able to hook into the help of a scientist at a computer at MIT. And the scientist in Boston will be able to call on the expertise of the scientist in Shanghai and all of it in a matter of seconds. My young friends, this is the way of the future. By pooling our talents and resources, we can make space a new frontier of peace. Your government's policy of forging closer ties in the free exchange of knowledge has not only enlivened your economy, it has opened the way to a new convergence of Chinese and American interests. You have opened the door, and let me assure you that ours is also open. All of this is particularly exciting in light of the recent history of our two countries. For many years there was no closeness between us, and the silence took its toll. A dozen years ago it began to change. Together we made a change, and now in the past five years your policy of opening to the outside world has helped us begin to know each other better than we ever have before. But that process has just begun. To many Americans, China is still a far away place, unknown, unseen, and fascinating. And we are fascinated. I wonder if you're aware of the many ways China has touched American life. The signs of your influence and success abound. If I were spending this afternoon in Washington, I might look out the window and see a man and woman strolling along Pennsylvania Avenue, wearing Chinese silk. They might be on their way to our National Portrait Gallery to see the Chinese art exhibit, and from there perhaps they would stroll to our National Gallery to see the new building designed by the Chinese American architect I.M. Pei. After that they might end their day dining in a restaurant that serves Chinese cuisine. We associate China with vitality, enormous vitality, and something that doesn't always go along with that. Subtlety. The subtlety of discerning and intelligent minds. Premier Zhao saw something of the American attitude toward China when he visited us in January. He said after a few days in our country that he never expected such profound feelings of friendship among the American people for the Chinese people. Well, let me say I'm happy to return the compliment. I have found the people of China to be just as warm and friendly toward us, and it's made us very glad. But meeting you and talking to you has only made me want to know more. And I sense that you feel the same way about Americans. You too wish to know more. I would like to tell you something about us and also share something of my own values. First of all, America is really many Americas.  We have drawn people from every corner of the earth. We're composed of virtually every race and religion, and not in small numbers but large. We have a statue in New York Harbor that speaks of this. A statue of a woman holding a torch of welcome to those who enter our country to become Americans. She has greeted millions upon millions of immigrants to our country. She welcomes them still. She represents our open door. All of the immigrants who came to us brought their own music, literature, customs, and ideas. And the marvelous thing, I think of which we're proud, is they did not have to relinquish these things in order to fit in. In fact, what they brought to America became American, and this diversity has more than enriched us. It has literally shaped us. This tradition, the tradition of new immigrants adding to the sum total of what we are, is not a thing of the past. New immigrants are still bringing their talents and improving the quality of American life. Let me name a few. I think you will know their names. In America, Wang computers have become a fixture in offices throughout the country. They are the product of the energy and brilliance of Mr. An Wang, who himself is the product of a Shanghai University. The faces of our cities shine with the gleaming buildings of Mr. I. M. Pei, who first became interested in architecture as a student here in Shanghai. What we know of the universe and the fundamental nature of matter has been expanded by the Nobel Prize-winning scientist, Dr. Lee Sung Dao, who was born in Shanghai. We admire these men, we honor them, and we salute you for what you gave them that helped make them great. Sometimes in America, some of our people may disagree with each other. We are often a highly disputatious nation. We rather like to argue. We are free to disagree among ourselves, and we do. But we always hold together as a society. We have held together for more than 200 years because we are united by certain things in which we all believe, things to which we have quietly pledged our deepest loyalties. I draw your special attention to what I am about to say because it is so important to an understanding of my country. We believe in the dignity of each man, woman, and child. Our entire system is founded on an appreciation of the special genius of each individual and of his special right to make his own decisions and lead his own life. We believe, and we believe it so deeply that Americans know these words by heart, we believe that all men are created equal, that they are endowed by their creator with certain unalienable rights, that among those are life, liberty, and the pursuit of happiness. Take an American student or teacher aside later today and ask if he or she hasn't committed those words to memory. They are from the document by which we created our nation, the Declaration of Independence. We elect our government with a vote of the people. That is how we choose our Congress and our president. We say of our country, hear the people rule, and it is so. Let me tell you something of the American character. You might think that with such a varied nation there couldn't be one character, but in many fundamental ways there is. We are a fair-minded people. We are taught not to take what belongs to others. Many of us, as I said, are the children and grandchildren and great-grandchildren of immigrants, and from them we learn something of hard labor. As a nation, we toiled up from poverty.  None is less inclined to take what is not theirs. We are idealists. Americans love freedom, and we fought and died to protect the freedom of others. When the armies of fascism swept Europe four decades ago, the American people fought at great cost to defend the countries under assault. When the armies of fascism swept Asia, we fought with you to stop them. And some of you listening today remember those days, remember when our General Jimmy Doolittle at his squadron came halfway around the world to help, and some of those pilots landed in China. You remember those brave young men. You hid them and cared for them and bound up their wounds. You saved many of their lives. When the Second World War was won, the United States voluntarily withdrew from the faraway places in which we had fought. We kept no permanent, permitted armies of occupation. We didn't take an inch of territory, nor do we occupy one today. Our record of respect for the freedom and independence of others is clear. We're a compassionate people. When the war ended, we helped rebuild our allies and our enemies as well. We did this because we wanted to help the innocent victims of bad governments and bad policies, and because if they prospered, peace would be more secure. We're an optimistic people. Like you, we inherited a vast land of endless skies, tall mountains, rich fields, and open prairies. It made us see the possibilities in everything. It made us hopeful. And we devised an economic system that rewarded individual effort that gave us good reason for hope. We love peace.  We think and always have that war is a great sin, a woeful waste. We wish to be at peace with our neighbors. We want to live in harmony with friends. There is one other part of our national character I wish to speak of. Religion and faith are very important to us. We're a nation of many religions, but most Americans derive their religious belief from the Bible, the Bible of Moses who delivered to people from slavery, the Bible of Jesus Christ who told us to love thy neighbor as thyself, to do unto thy neighbor as you would have him do unto you. And this too has formed us. It's why we wish well for others. It's why it grieves us when we hear of people who cannot live up to their full potential and who cannot live in peace. We invite you to know us. That is the beginning of friendship between people. And friendship between people is the basis for friendship between governments. The silence between our governments has ended. In the past twelve years our people have become reacquainted and now our relationship is maturing and we're at the point where we can build the basis for our lasting friendship. You know, now you know as I do that there's much that naturally divides us. Time and space, different languages and values, different cultures and histories and political systems that are fundamentally different. It would be foolish not to acknowledge these differences. There's no point in hiding the truth for the sake of a friendship. For a friendship based on fiction will not long withstand the rigors of this world. But let us for a moment put aside the words that name our differences and think what we have in common. We are two great and huge nations on opposite sides of the globe. We are both countries of great vitality and strength.  We are the most technologically developed. Each of us holds a special weight in our respective sides of the world. There exists between us a kind of equipoise. Those of you who are engineering students will perhaps appreciate that term. It speaks of a fine and special balance. Already there are some political concerns that align us and there are some important questions on which we both agree. Both the United States and China oppose the brutal and illegal occupation of Campuchia. Both the United States and China have stood together in condemning the evil and unlawful invasion of Afghanistan. Both the United States and China now share a stake in preserving peace on the Korean peninsula and we share a stake in preserving peace in this area of the world. Neither of us is an expansionist power. We do not desire your land nor you ours. We do not challenge your borders. We do not provoke your anxieties. In fact both the United States and China are forced to arm themselves against those who do. The United States is now undertaking a major strengthening of our defenses. It's an expensive effort but we make it to protect the peace knowing that a strong America is a safeguard for the independence and peace of others. Both the United States and China are rich in human resources and human talent. What wonders lie before us if we practice the advice Tong Li He Zuo connects strength and work together. Over the past 12 years American and Chinese leaders have met frequently to discuss a host of issues. Often we've found agreement but even when we have not we've gained insight into each other and we've learned to appreciate the other's perspectives on the world. This process will continue and will flourish if we remember certain things. We must neither ignore our problems nor overstate them. We must never exaggerate our difficulties or send alarms for small reasons. We must remember that it is a delicate thing to oppose the wishes of a friend and when we're forced to do so we must be understanding with each other. I hope that when history looks back upon this new chapter in our relationship these will be remembered as days when America and China accepted the challenge to strengthen the ties that bind us, to cooperate for greater prosperity among our people and to strive for a more secure and just peace in the world. You, the students at Fudan University and the scholars at all the universities in China and America have a great role to play in both our country's futures. From your ranks will come the understanding and skill the world will require in decades to come. Today's leaders can pave the way of the future. That is our responsibility. But it is always the younger generation who will make the future. It is you who will decide. It is you who will decide if a continuing personal friendship can span the generations and the differences that divide us. In such friendship lies the hope of the world. When he was a very young man, Zhou Enlai wrote a poem for a schoolmate who was leaving to study abroad. Zhou appreciated the responsibilities that separated them but he also remembered fondly the qualities that made them friends and his poem ends, promise I pray that someday when task done we go back farming we'll surely rent a plot of ground and as pairing neighbors let's live or let us as pairing neighbors live. I've been happy to speak to you here to meet you in this city that is so rich in significance for both our countries. Shanghai has a city of scholarship, a city of learning. Shanghai has been a window to the west. It is the city in which my country and yours issued the communique that began our modern friendship. It is the city where the Yangtze meets the East China Sea which itself becomes the Pacific which touches our shores. The Yangtze is a swift and turbulent river, one of the great rivers of the world. My young friend's history is a river that may take us as it will but we have the power to navigate, to choose direction and make our passage together. The wind is up, the current is swift and opportunity for a long and fruitful journey awaits us. Generations hence will honor us for having begun the voyage, for moving on together and escaping the fate of the buried armies of Jian, the buried warriors who stood for centuries frozen in time, frozen in an unknowing enmity. We have made our choice. Our new journey will continue and may it always continue in peace and in friendship. Thank you very much. Respected Mr. President, we very much appreciate the goodwill you have just expressed to further promote the Sino-American relationship and to strengthen the friendship between the Chinese and American peoples. On behalf of the audience and in my own name, I would like to express our deep appreciation of your speech. Mr. President's speech has reminded me of the days I spent with American teachers and students when I studied in the United States and with my fellow students, and I remember the years when I was very young. I remember the days when I spent with my fellow students and with my fellow Americans with American teachers and students when I studied in the United States in my youth. Many years have passed since, but I have kept vivid memories of how very hardworking and high-spirited young Americans always are, and of what kind feelings the American people cherish for the Chinese people. From that time until now, the world's situation and China's appearance have changed a lot. China has finally accepted the history of being suppressed and humiliated for more than 100 years, and has established a public society that no one has ever seen before. Now, our young people have had various opportunities to fully develop their clever talents, to strengthen and re-enter the world's advanced technology industry, and to make contributions. Over these long years, great changes have taken place in China, as well as in the world at large. For China, an entire century of being downtrodden in humiliation is now a closed chapter. A socialist society free from exploitation of man by man has come into being. Today, young people of our country have ample opportunities to bring into full play their intelligence and abilities. They are making a remarkable contribution to the prosperity of the country and to China's re-entry into advanced ranks of the world in science and technology. As Mr. President mentioned, young people have a major responsibility on their shoulder for the future of the world. In the present-day world, peace has not yet been set in place in the world, but in the future of the world. In the present-day world, peace has not yet been set in place in the world, but in the future of the world. In the present-day world, peace has not yet been securely achieved. The peace-loving Chinese people will seek to improve relations with all other countries in the world, including the United States, on the basis of the five principles of peaceful coexistence, respecting each other's sovereignty and territorial integrity, and not interfering each other's internal affairs. I'm sure that our younger generation will exert themselves in defending these principles and in bringing them into realization. Chinese-US people have traditional friendship. The long-term resolution of the two countries' relations to this day, Mr. President, is also a huge change. We hope that in the five principles of the above five, on the basis of the three United States-US joint press, the two countries' relations will keep the current market and continue to progress. I also believe that the teachers and students of Fudan will strengthen their communication with the United States in order to make their own contribution. There has been a traditional friendship between the Chinese and American peoples. From a long-frozen period in the relationship between our two countries to the present visit undertaken by President Reagan, Sino-American relations have followed a zig-zag path. We hope both sides will act in accordance with the above mentioned five principles and with the three Sino-American joint communiques so as to keep the present momentum in the development of Sino-American relations and to push such relations further ahead. I believe that our students and faculty members will gladly commit themselves to the continued growth of exchanges in various fields between China and the United States. In order to thank President Reagan, I would like to thank President Reagan of the University of Fudan for his contribution to the development of Sino-American relations and the development of Sino-American relations. Mr. President, as a token of our appreciation of your visit to Fudan University, I would like on behalf of the students and faculty members of Fudan University to present you three volumes of an atlas of Chinese historical maps compiled by the Institute of Historical Geography, led by Professor Tan Qixiang. I hope that these volumes will serve as a souvenir to remember your visit by. The entire project, when completed, will consist of eight volumes, among which only three are now published. We shall send the rest to Mr. President as they come off the press. The session is over. The best thing would be to duck down. They're going to go right around here and in. What do you think, Mr. President? I think it's wonderful, especially since our host here built his home himself. Yeah, Fisher is there. Don't Fisher clean it up. Juan is at the party. He's really not cool.


It's a good question, and it's evolved, and it evolved throughout the human genome project when we expected that we had somewhere between 100,000 and 200,000 genes. So I don't think we should focus too much on the definition of a gene, I think we should try to sequence as much of the genome as we can and to be able to analyze as much of the genome as we can, and we worry less about the functional definition of a gene, and we worry more about the operational definition of changes, variation, mutations, what have you, and how that sort of plays the phenotype.


Live from New York City, it's theCUBE. Covering Lenovo Transform 2017. Brought to you by Lenovo. Welcome back to theCUBE's coverage of Lenovo Transform. I'm your host, Rebecca Knight, along with my co-host, Stu Miniman. We are joined by Radhika Krishnan. She is the VP and GM of Software-Defined Infrastructure at Lenovo. Thanks so much for joining us. You've been on before, so thank you for having us. Welcome back. It's a pleasure to be back on again. Thank you. So I want to start out by talking about something we've been hearing a lot about today, and that is Lenovo's lack of legacy and how that makes it easier for your company to innovate and to sell to customers. Can you talk a little bit about that from your vantage point? Absolutely, Rebecca. So if you look around, there are a lot of legacy vendors that have incumbent businesses that have been built on very customized, very proprietary offerings. I'll point to my own background. I've spent a chunk of my career in storage, a chunk of my career in networking, a chunk of my career in service. And if you look across all of the offerings that come out from these vendors, these are usually high-margin, they're very rich offerings. And so as the industry has moved towards Software-Defined, there is less of a motivation on the part of these vendors to really embrace Software-Defined entirely. Now, Lenovo does not have that baggage, right? We're not looking to protect any legacy businesses. There is no concern around cannibalizing and existing stream of revenue or profits. And so we are truly able to innovate from the ground up. Rebecca, so the Software-Defined really is the intersection of pulling some of those pieces into standard typically x86 components. Can you bring us inside a little bit of Think Agile, the new brand that's announced? Seems maybe you're going to get a new job title, you know, to match that branding, but it feels like it all kind of pulls together to Lenovo's server as a core piece and then adding software on top of it. That is absolutely spot on Stu, you know? I mean, if you think about it, our core expertise is in building highly reliable, high-performing servers, right? And if you think about where Software-Defined is headed, you know, it's all anchored around a server, a core server platform or a platform that can deliver processing capabilities, which were extremely capable. I mean, we've got the industry's best supply chain as you heard, you know, highly reliable platforms, you know, variety of benchmarks and so forth. So we've got the basis, the foundation for being able to innovate with Software-Defined on top of that. All right, can you bring us inside the Think Agile family as it were? There's some partnerships, there's OEM, there's some technology Lenovo has. What fits under this umbrella? What are we up to today and what's coming soon? Absolutely, so the way we think about Think Agile is, we want to deliver to our customers the simplicity, the agility, and the cost economics that they may get in a public cloud in on-prem infrastructure, right? So if you had to net it out, our vision really is to deliver on the benefits and more. And so to that end, the way we have it architected is as a set of, you know, two sets of offerings. So we have appliances, which essentially take capabilities like Software-Defined storage and hyper-converged, blend them with our very capable platforms and deliver it as a turnkey offering. We're also bringing to market rack scale solutions, you know, keeping in mind that there are customers that want to consume the entire infrastructure, you know, end to end in a single turnkey offering for bringing those to market as well. And we're seeing a very strong response for both of those types of flavors. When you're talking about innovation and you're a tech veteran who has spent your career at various companies, large and small in the industry, how does Lenovo approach innovation? Especially because it's a large company, 43 billion in sales, 52,000 employees around the world. How do you stay in the startup mindset or do you? Well, we absolutely do and that's actually one of the, you know, as I mentioned earlier, Rebecca, you know, we don't have the baggage of legacy. And so if you look at how we're really approaching the Software-Defined space, you're exactly right. We're approaching it like an entrepreneur, you know, very much in a startup mode. We're able to innovate from the ground up, which is exactly what we're doing. You know, we're able to step back and look at it holistically from a standpoint of customer problems today, right? So there is no longer a, you know, let's see if we can wedge in this other, you know, multimillion dollar business here because that could then generate it more revenue stream. It's really more around organically thinking through what customer problems are, applying a first principles-based approach and then investing in it. So from that standpoint, it is very exciting to be in an environment where you can truly operate in a startup mode while you have the benefit of, you know, the very large sales teams that you alluded to and the, you know, ability to invest in it as well. What are some of the managerial practices that enable that? I mean, one of the things that Rod was talking about in the very beginning was there's no arrogance at Lenovo and then it really is part of the culture. I mean, can you describe a little bit about how you do get customer feedback and how you do work with customers to solve these problems? Absolutely. So, you know, I think a big part of it is, you know, the ability to live in, right? You know, humility starts with, you know, paying attention to your customers, paying attention to the stakeholders around you. And so, you know, we definitely do a lot of that. The other thing I'll point to as well is, you know, there is a very distinct emphasis around agility, right? You know, it's around the need to move quickly as Stu and I were talking about prior to the session.  You know, there is transformation happening every day as we speak and therefore it is very important to be tuned in to what is going on around you and to be able to deliver on, you know, what customers are truly seeking. So, yeah, I mean, I would say humility is a big aspect of it, it's the agility, it's the hunger, the desire to succeed as well. Radhika, specifically what customers are asking for, I'm curious what you're hearing around hybrid cloud. I look at solutions that you're offering, including you've got the Nutanix solution, you've got the Microsoft Azure Stack coming soon. What are you hearing from customers? What do they look for in a hybrid cloud solution and how are you looking to deliver on that? Yeah, so that's a very interesting question, Stu, because, you know, over the years, you know, many, many vendors in this space have, you know, talked about hybrid cloud, but it's never really come of age for to speak.  And I, as one of the things we've done in partnership with Microsoft is to really profile how customers really want to consume this notion of hybrid, right?   And so, Microsoft Azure Stack, in particular, I would point to it as one, you know, hybrid cloud offering that we do have in the marketplace that we're partnering very closely around which truly addresses the problems that customers or the desires that customers have in this space. When you're thinking about your customers, what keeps you up at night? I mean, you just were describing how customers aren't even sure themselves, you know, how hybrid they want to be and how they will use the cloud. What are your biggest concerns when you think about your customers and how they use Lenovo's offerings? Yeah, so, you know, I think at the core of it, you want to enable them to succeed, right? I mean, it's not so much about the IT infrastructure underneath, it's really about enabling them to drive their business as quickly as they can, to drive productivity and so on. So, for us, it's very important that we stay aligned with their business objective and eliminate the worry and concern that they typically have with IT infrastructure under their hood, right? I mean, honestly, if we all in the industry tend to say IT is a means to an end and we truly want to enable that, I mean, we truly want to make this a non-issue for our customers. So that's really what keeps us up at night is ensuring that we have the right framework, the right portfolio, the right set of offerings and more importantly, the right set of services to allow them to do that. Radhika, we all know that IT is typically spending way too much time with some of the basic blocking and tackling. The number I've here, plus 15 years, is 75, some are doing 75, 90% of your budget is spent on kind of keeping the lights on. What's holding us back? How are we actually moving the needle forward with some of these new solutions? I think a lot of it interestingly comes down to software-defined. I mean, if you think about it, software-defined enables a level of agility, simplicity and cost economics as well, that we weren't able to previously get from the more legacy hardware-centric offerings, right? So I think to a large extent it comes down to being able to deliver on the automation, the deep integration across hardware and software, which is really where we at Lenovo think we can add the most value because we've got the platforms as we just talked about and so we're really very keen on innovating on the software layer about it, such that customers can expect to get these highly verticalized offerings that they can then deploy for their workloads and various other business use cases. All right, Radhika, we can't let you get out of here without talking about some of the networking pieces with your background. Kirk talked about it a little bit, but can you give us a little insight what's Lenovo doing with the networking piece, some of the integrations that you're helping to deliver? Yeah, that's an area I feel incredibly proud of. I'll say that, you know, if I've spent the last couple of decades in the IT industry, it's becoming very evident, you know, there's a simplicity that is continuing to grow, right? Even obviously we've come out with hyper-converged, it's solved the storage problem, it's made it a lot simpler to consume. Networking is really the next frontier, right? You know, it's the frontier that hasn't been attacked yet. We're still talking about technologies that are in work that are like four decades old, right? And so this is ripe for a disruption. That's exactly what we're doing.  So we're really helping simplify that challenge for them. You know, we're giving them, we're coming up with tools and we're announcing a couple of these today. We're coming up with tools that provide much better visibility with telemetry capabilities. We're providing them tools that allow them to apply policies. So even as they deploy different types of workloads, they can specify quality of service and have that carried over to the network traffic as well. So we're incredibly excited about what we're doing here in networking. So where do you see, what's the end for networking in the sense of, as you said, it is an industry that is ripe for disruption. Where do you think we'll be 10 years from now in terms of networking, in terms of visibility? Yeah, that's a very interesting question. I think networking has to evolve to where it is much, much, much more simplified. You don't need to have certifications that you have to gain over, you know, multiple years in order to qualify you to work in the data center and get, because ultimately this is plumbing, right? And as we go to scale out data centers, it's going to be incredibly important that nodes are able to talk to each other and data is fluid and is able to move around very quickly and networking is what enables it. And so the ultimate vision for networking is really making it invisible, right? Make it invisible to the point that you don't have to worry about it. Radhika, thank you so much for joining us. It's always a pleasure to have you on. Thank you, it's been my pleasure as well. Appreciate it. I'm Rebecca Knight for Stu Miniman. We'll be back with more of the CUBE's coverage of Lenovo Transform after this.


Soon a new year is upon us and you got new goals, maybe you got some old goals, but the goals nonetheless. And after 20 years of animating, here are a few tips that have helped me along the way, but hopefully also could help you. And also to be honest, that could be life goals. So right off the bat, the two most important tips that I have for you are, take note of what you did well and double down on that. I'm expanding on that later. And the second tip is, take also note what you did not do well. There's a very specific way of how I would approach that. Well, let's get to the first tip first. First tip first, first tip first. So look at what you did well, double down on that. Mainly because when you have something that you animate and that you have fun with, that is going to help you to get more motivated to continue. Now, side tangents do not wait for motivation. That's a whole different tip, but you get your motivation as you do work. You have to find a way to just start to work. And that's why you got to do something that you like. So take an action that you did, a body mechanic, an acting shot, a lip sync, a funny walk cycle, whatever you have, right? Take that and start working on this because you like it already. Get better on that because it's important to take your strength and make them even better and then take your weaknesses and then work on that at the same time so that you're more balanced in your skill set. But as you work on something that you have fun with, you continue to get motivated because it is fun because you're good at it and you get more confident and you're going to keep doing this. You can't just wait and sit and wait for motivation. That's just not going to appear. Motivation comes through the works. Find a way, get into that mindset of starting the work first. And to me, that is easier when you do something that you like. Hands double down on the things that you like. And I wouldn't be just willy-nilly about it. Make notes. Write down, I'm good at this. I'm good at that. And you know, like everybody has imposter syndrome, like I feel like I'm not too good at this, but objectively maybe ask someone, make a list of what you're good at and tell yourself, I am good at this.  Then take that list and keep working on that. And you can mix and match and keep doing those walk cycles and acting shots and mechanics and martial arts, whatever you do in whatever field and whatever medium. If you love it, double down on that and keep going. Now, what about the things you're not good at? Well, do the same thing. Make a list. Be critical. Again, maybe ask someone, but be critical with yourself and go, I'm really not good at this, this, this. And it's probably a longer list. Maybe, I don't know, for me, it's a longer list than the things that I'm good at. But take these, then practice those with shorter shots. The things that you're good at, you can do a five-second, seven-second, 10-second shot. Maybe even 20 can cut it up in separate shots and do a whole sequence because you're good at it. You're motivated. You're gonna double down and get to that. The stuff you're not good at, if you work on something that's longer, that you're struggling with, you're gonna get frustrated. You're gonna get demotivated. You lose your confidence in it. You're not gonna finish this. So make a list of what you're not good at and then cut these up into short little shots. Two seconds, three seconds max. Maybe even just one second. You can do head turns, gestures, a move, a mechanic, whatever it is, something that you struggle with, but keep it short. That way you can easily practice. You can also easily throw it away when you get frustrated and start something new. But it's important that you do something short so that you can attack it more easily. You get more confident. It's also easy in terms of time management, more on that later. Because when you're trying to work on something that you're not good at, you have to be smart about it. So don't waste time. Make sure that it's achievable and that those are goals that you can set to the side where maybe you can do this in the morning, maybe quick over lunch or in the evening, maybe a quick thing over the weekend. But important thing is that you don't neglect it.  And then same thing with the things you're good at. Make a list. Write down what you're not good at. This will help you clarify the things that you need to achieve. For both, the good and the bad, it makes it easier to track, track your results and look back of I did this, this and this. You can check it out. Whatever you process, right? Maybe you need Post-it notes. That's what I do. I have Post-it notes. So when I'm done with it, I can take it, scrunch it and throw it away. That's a task. I'm done. It's a physical thing of I'm done with this. Other people might do something on the board with writing it down and crossing it off or in a notebook or whatever you have. Whatever you need to be something physical, something on your phone with a list, but track it, make a list, compare where you started. But sometimes you might work on something that's really long. If you're like, I've been practicing this, am I really better at it? But when you track things and write things down, you have ways to compare. And you can see where you started, where you're at now. And trust me, if you do things every day, once a week, achievable, smaller chunks, you chip at it, you are getting better. Even if you feel like you're not. Now you might say that, well, for me, it's not just about shots. I want to get a job. This could be in any field. For this channel, it's in animation. So take that bigger goal and break it down into smaller pieces. So the bigger goal is get a job. How do you get a job? You got to get a demo reel for that. How do you get a demo reel? Well, you got to work on shots. Break down bigger goals into smaller, manageable tasks. Again, this is not just for animation.  Holy works. For me, at least try it out. Why? Because this will make it easier to stay motivated because you can chip away at something. Go like, I did this, checked off, I did it. Versus one big goal where you go like, I'm still not done with this. Man, I don't know if I can do this. So keep things small. You have multiple goals and wins. You gain confidence. Through that comes motivation. You keep going. And it also helps you see progress more quickly. It's something that will take months. You have something every day or every week or even once a month. That will show you more progress faster than a longer, bigger chunk that might get too frustrating and that you might abandon. Now it's easy to say all this and to think about, that's what I'm going to do. I wouldn't stop there. It's important to think about that, but it's really important to establish a plan of action, so to speak. So we talked about, or I talked about how to identify what you need. You might write it down, but like, I'm not good at this, but I'm good at this. That's fine. And think about time management. The proper tools. What kind of workflows? If you animate scripts, shortcuts. Like whatever you have, you can even set up habits and routines. This again, this is for animation. This is also for your life. Surround yourself with ways and tools and people that will help you get there. Because it's going to be easier with help. And the help again can be by taking notes, by having a certain routine throughout the day in terms of how you manage your time and your tasks. Whatever is there that will help you get to your goal. Don't get me wrong. Through all of this, you're going to make mistakes. But don't see a mistake as this is a failure. I didn't get to this. I should stop. For me, every time I make a mistake or there is a what you call a failure, it just identifies to me what I need to get better at. It just adds something to the list of, oh, okay. I didn't do it as well. Let me add this to the list. I'm going to work on this. So basically it's an opportunity for growth. This might be a bumper sticker way of saying it, but to me at least that's true. Every mistake or every failure is an opportunity for growth. So don't have those mistakes to hold you back. Use that as an opportunity to move forward and to improve. Just know that it's going to be more daunting and potentially intimidating at the beginning.  It's going to be a lot at the beginning. And that's why you want to surround yourself with whatever you can in terms of help so that you continue because it's going to be that bigger hump. It wants to get in there. Once you get into that habit and that routine and you get the results and you see the results. That's why I need to have multiple smaller goals. So you start seeing the results and go, hey, I can actually do this. Then it's going to get easier. And then you can keep going and going and going. Just know at the beginning, it's going to be harder but push through that and it's going to get easier. Now, you might have a job. You might have a family. You might have multiple jobs. You might have so many other things. How do you manage all this? Or how would I go about this? Well, if you want to know how I break up my day, as best as I can, it's not always like that. Well, I try. Then you can watch this clip. Happy New Year and good luck.